我刚看到有人想要使用以下结构:
val x: Option[Option[Int]] = Some(None)
有人可以提供一个有用的例子吗?
答案 0 :(得分:5)
示例:打开文件并从中读取Int
的函数。
None
Some(None)
123
的文件,您将获得Some(Some(123))
答案 1 :(得分:4)
我们可以将它放在Scala Map[String, Int]
的上下文中。
Map("a" -> Option(1), "b" -> None)
m.get(key)
有三种可能的输出类型。
如果密钥存在并且有值,我们会得到Some(Some(1))
。
scala> m.get("a")
res28: Option[Option[Int]] = Some(Some(1))
如果密钥存在但没有值,我们会得到Some(None)
。
scala> m.get("b")
res29: Option[Option[Int]] = Some(None)
如果密钥根本不存在,我们会得到None
。
scala> m.get("c")
res30: Option[Option[Int]] = None
这在您需要编码三种状态的情况下非常有用:
大多数时候我们(I)不关心第二个条件,所以我们崩溃到Option[Int]
,但它仍然有用。