scala 中 Option[String] = None 和 Option[String] 的区别

Avi*_*ddy 0 scala case-class

我已经开始学习 Scala 并浏览我项目中的代码(案例类和其他东西)。

我看到一个这样定义的案例类:

case class Test(firstName: Option[String] = None, lastName: Option[String])
Run Code Online (Sandbox Code Playgroud)

我对上述案例类有几个问题:

  1. Option[String] = None和 和有Option[String]什么区别?
  2. 什么是正确的用法,我们应该什么时候使用Option[String] = Noneand Option[String]

Lui*_*rez 5

参数的“正则表达式”是这样的:name: type (= defaultValue)- 请注意,默认值部分是optional

因此,firstName: Option[String] = None意味着参数名为firstName并且它的类型为Option[String]并且其默认值是None (还请记住 Option 类型用于解释一个值可能存在与否。而None意味着它不存在)

两者都是正确的,具体取决于上下文,在这种情况下,可以像这样使用此类:

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".
Run Code Online (Sandbox Code Playgroud)

请注意,我总是必须指定其姓氏,因为它没有默认值。