我是scala的新手!Option(value)和Some(value)之间的区别
我的问题是,如果有案例类包含一个成员
myItem:Option[String]
当我构建类,我需要包装的字符串内容:
Option("some string")
OR
Some("some string")
有什么区别吗?
谢谢!
我是scala的新手!Option(value)和Some(value)之间的区别
我的问题是,如果有案例类包含一个成员
myItem:Option[String]
当我构建类,我需要包装的字符串内容:
Option("some string")
OR
Some("some string")
有什么区别吗?
谢谢!
如果你看看Scala's sources,你会发现,Option(x)
只是评估x
和非空输入返回Some(x)
和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
Option(x)
基本上只是说if (x != null) Some(x) else None
def apply[A](x: A): Option[A] = if (x == null) None else Some(x)