Разница между Option [String] = Нет и Option [String] в scala - PullRequest
0 голосов
/ 04 марта 2020

Я начал изучать Scala и проходить через код (классы дел и другие вещи) в моем проекте.

Я вижу класс дел, определенный так:

case class Test(firstName: Option[String] = None, lastName: Option[String])

У меня есть несколько вопросов по поводу приведенного выше класса дел:

  1. В чем разница между Option[String] = None и Option[String]?
  2. Как правильно использовать, когда следует использовать Option[String] = None и Option[String]?

1 Ответ

5 голосов
/ 04 марта 2020

Параметр "regex" для параметра выглядит примерно так: name: type (= defaultValue) - Обратите внимание, что значение по умолчанию составляет необязательно .

Таким образом firstName: Option[String] = None означает, что параметр имеет имя firstName и имеет тип Option [String] , а его значение по умолчанию равно None (также помните, что тип Option используется для объяснения того, что значение может существовать или нет. И что Нет означает, что оно не существует) .

И то, и другое правильно, в данном случае это Класс может использоваться как:

Test(lastName = None)
// res: Test = Test(None,None) - A person without names.

Test(lastName = Some("Mejia"))
// res: Test = Test(None,Some(Mejia)) - A person with just its last name, which it is "Mejia".

Test(firstName = Some("Luis"), lastName = Some("Mejia"))
// res: Test = Test(Some(Luis),Some(Mejia)) - A person whose first name is "Luis" and its last name is "Mejia".

Test(firstName = Some("Luis"), lastName = None)
// res: Test = Test(Some(Luis),None) - A person with just its first name, which it is "Luis".

Обратите внимание, что мне всегда нужно указывать его фамилию, потому что он не имеет значения по умолчанию.

...