Подтвердить что ты не робот

Разница между опцией (значением) и некоторым (значением)

Я новичок в scala!

Мой вопрос: если есть класс case, содержащий член

myItem:Option[String]

Когда я создаю класс, мне нужно обернуть содержимое строки в:

Option("some string")

ИЛИ

Some("some string")

Есть ли разница?

Спасибо!

4b9b3361

Ответ 1

Если вы посмотрите в Scala sources, вы заметите, что Option(x) просто оценивает x и возвращает Some(x) on not -новый вход и None на вкладке null.

Я бы использовал Option(x), когда не уверен, что x может быть null или нет, и Some(x), когда 100% уверен, что x не null.

Еще одна вещь, которую следует учитывать, - это когда вы хотите создать необязательное значение, Some(x) создает больше кода, потому что вы должны явно указать тип значения:

val x: Option[String] = Some("asdasd")
//val x = Option("asdasd") // this is the same and shorter

Ответ 2

Option(x) в основном просто говорит if (x != null) Some(x) else None

См. строка 25 исходного кода:

def apply[A](x: A): Option[A] = if (x == null) None else Some(x)