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]NoneNone
Clojure 函数的行为似乎seq相似:(seq x)如果 x 不为 null 或 x 为 null,则将是一个项目的序列nil。然后可以将该值传递给(map ...),(filter ...)等,就像 ScalaOption方法一样。
我错过了什么吗?这种模式有意义吗?这是“尤里卡”吗?对有经验的 Clojure 程序员来说显而易见的时刻?