我已经开始学习 Scala 并浏览我项目中的代码(案例类和其他东西)。
我看到一个这样定义的案例类:
case class Test(firstName: Option[String] = None, lastName: Option[String])
Run Code Online (Sandbox Code Playgroud)
我对上述案例类有几个问题:
Option[String] = None和 和有Option[String]什么区别?Option[String] = Noneand Option[String]?参数的“正则表达式”是这样的: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)
请注意,我总是必须指定其姓氏,因为它没有默认值。