代码后面的代码不起作用,因为重新查找接受一个字符串作为第一个参数,一个正则表达式作为第二个参数.
(-> "hello" .toUpperCase (re-find #".$"))
如果我重新找到这样的代码,代码将起作用:
(defn re-find2 [s r] (re-find r s))
如果我现在用re-find2替换re-find,我得到了我的预期:大写的"O".
如何在不重新包装的情况下解决这个问题?
如上所述,如果所有函数只有一个参数或者将结果作为最后一个参数,则可以使用thread-last.但是,如果您还有具有多个参数的函数,并且您必须将结果传递到无法通过 - >或 - >>处理的特定位置,那么as-> macro可能是您最好的选择.
此宏允许您为每个函数调用的结果指定绑定.现在结果有一个名称,您可以控制该参数的位置.看一下关于线程宏的博客文章