lambda - 线程宏 -> 带有匿名函数

标签 lambda clojure macros

我理解 Clojure 中的 `-> 标题宏应用为给定参数提供的所有函数。但是,它似乎不适用于匿名函数。例如:

user> (-> 4 inc inc dec)
5

但是:

user> (-> 4 #(+ % 1) #(- % 1) #(+ % 1))

返回错误:

clojure.lang.Symbol cannot be cast to clojure.lang.IPersistentVector
[Thrown class java.lang.ClassCastException]

如果有人知道解决方法,那将会很有帮助。谢谢!

最佳答案

您可以在 Clojure 宏中使用匿名函数。您遇到了问题,因为您缺少一些括号。 :) 您的示例已在下面编辑。

(-> 4 (#(+ % 1)) (#(- % 1)) (#(+ % 1)))

关于lambda - 线程宏 -> 带有匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10740265/

相关文章:

clojure - 自定义 map 函数在惰性场景中表现奇怪

emacs - clojurescript中浏览器Repl、浏览器、http服务器之间的交互

objective-c - 为什么在 Objective-C/Cocoa 中使用宏?

vim - 如何保存包含 "Escape"按键的 Vim 宏?

c# - Join 语句中的 Lambda where 条件

c++ - 避免手动创建 lambda 来包装对 new[]: 的调用,以用作 std::generate 中的生成器函数

java - 是否可以仅使用 lambda 表达式将字符串转换为 int[]?

Java Lambda 方法引用 - 需要清楚

java - 斯坦福 CoreNLP 管道 coref : parsing some short strings (with few mentions) returns indexoutofbounds exception

c++ - 重新定义 __LINE__ 和 __FILE__ 常量