>Option(None)
res2: Option[None.type] = Some(None)
为什么有可能?为什么None的选项不会返回None?
答案 0 :(得分:11)
Scala(与大多数静态类型的函数式编程语言一样)是由可以以一致方式组合在一起的片段构建的。这与其他编程语言和库(通常是动态的)相反,这些编程语言和库试图预测程序员的意图并且通常通过具有许多特殊情况(嵌套结构的自动展平等)来支持这一点。
在Scala中Option
只是一种类型构造函数 - 您可以通过编写Option[A]
为字面上的任何类型A
创建Option(a)
。例如,Option[Int]
本身就是一种类型,因此您可以拥有Option[Option[Int]]
,Option[Option[Option[Int]]]
等等。没有特殊情况,只是构建程序的一般机制。
答案 1 :(得分:0)
不确定这是否是一个好答案。但请尝试阅读下一篇文章。
http://danielwestheide.com/blog/2012/12/19/the-neophytes-guide-to-scala-part-5-the-option-type.html
有些实际上是您尝试使用的值的包装器。所以你的代码是有效的。