用于Clojure的新some->宏的实际例子

joe*_*ohn 13 clojure

Clojure 1.5添加了新的线程宏,包括:

  • some->
  • some->>

更改日志有这个人为的例子来说明some->工作原理:

user=> (defn die [x] (assert false))
#'user/die
user=> (-> 1 inc range next next next die)
AssertionError Assert failed: false  user/die (NO_SOURCE_FILE:65)
user=> (some-> 1 inc range next next next die)
nil
Run Code Online (Sandbox Code Playgroud)

与其他程序员聊天,我们发现很难想到一个好的,实用的例子some->.你什么时候some->解决现实世界的问题?

Ale*_*ard 14

some->可用于"自动保护"一系列螺纹处理步骤,其中链中的某些部分(尤其是中间部分)可能返回nil,这将导致链中的逻辑故障.

特定示例可能包括将clojure函数与java interop一起线程化,您需要在其中防止空指针异常.


mac*_*mac 6

GitHub代码搜索有很多例子