小编jim*_*337的帖子

如何编写 Clojure 线程宏?

我正在尝试使用failjure/ok->>https://github.com/adambard/failjure#ok--and-ok-)编写线程宏,线程中的最后一个函数需要一个条件来执行。代码如下所示:

(f/ok->> (function1 param)
         (function2 param1 param 2)
         ...
         ({conditional function here}))

Run Code Online (Sandbox Code Playgroud)

如果条件未命中,线程宏返回倒数第二个函数调用的结果。我试图写一个cond是检查的必要条件,然后或者如果条件过去了,还是以前的功能而造成的返回的功能函数,但是线程宏似乎结果不传递给内部的功能cond,但只的cond本身。(不正确的)代码如下所示:

(f/ok->> (function1 param)
         (function2 param1 param 2)
         ...
         (cond (condition?)
             (function_if_passes_condition)
             #(%))
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种干净的方法可以正确地做到这一点。我想有可能编写一个具有这种功能的全新线程宏,但到目前为止我所有的尝试都没有奏效(我之前没有写过一个defmacro实现线程宏的程序,这非常困难)我是 clojure 的新手,有 3 个月的经验)。

error-handling clojure

2
推荐指数
1
解决办法
244
查看次数

标签 统计

clojure ×1

error-handling ×1