gpt4 book ai didi

scala - Clojure seq 替代 Scala Option[T]

转载 作者:行者123 更新时间:2023-12-05 01:37:19 28 4
gpt4 key购买 nike

Scala 提供了一个类层次结构 Option[T] , Some[T] extends Option[T] , 和 None extends Option[Nothing]我发现它对于包装可以返回的 Java 方法调用很有用 null , 除其他事项外:

val result = Option(someJavaMethodThatReturnsNull())
result行为类似于零项或一项的序列,具体取决于 Java 方法返回的是对象还是 null . Option有类似 map 的方法, filter等,您可以像序列上的那些一样使用,并且返回一个新序列( Some ),如果原始序列是 Some[T] , 或 None如果原件是 None .

看起来 Clojure 函数 seq行为类似: (seq x)如果 x 为非空或 nil,则将是一个项目的序列如果 x 为空。然后可以将此值传递给 (map ...) , (filter ...)等,就像 Scala Option方法。

我错过了什么吗?这种模式有意义吗?这是“ Eureka ”吗?对有经验的 Clojure 程序员来说显而易见的时刻是什么?

最佳答案

您总是可以使用 maybe monad ,这与 scala Option(和 haskell 可能)很接近,当然没有静态类型安全。

还有the family of ? threading functions (.?. 是 java 互操作的更好选择)

关于scala - Clojure seq 替代 Scala Option[T],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7821128/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com