Scala 提供了类的层次结构Option[T]
,我发现这对于包装可以返回的 Java 方法调用很有用,除此之外:Some[T] extends Option[T]
None extends Option[Nothing]
null
val result = Option(someJavaMethodThatReturnsNull())
result
根据 Java 方法返回的是对象还是null
. Option
具有 , 等方法map
,filter
您可以像在序列上一样使用这些方法,并且如果原始序列是,或者如果原始序列是 ,则返回一个新序列 ( Some
) 。Some[T]
None
None
Clojure 函数的行为似乎seq
相似:(seq x)
如果 x 不为 null 或 x 为 null,则将是一个项目的序列nil
。然后可以将该值传递给(map ...)
,(filter ...)
等,就像 ScalaOption
方法一样。
我错过了什么吗?这种模式有意义吗?这是“尤里卡”吗?对有经验的 Clojure 程序员来说显而易见的时刻?