为什么不能在线程宏中使用匿名函数?

安德鲁

如果我在线程宏中使用匿名函数之前定义了它:

(def even #(map even? %))
(-> [1 2 3] even)

我得到正确的结果:

(false true false)

但是,如果我评估以下代码:

(-> [1 2 3] #(map even? %))

我收到以下错误:

clojure.lang.Compiler$CompilerException: java.lang.IllegalArgumentException: fn params must be Symbols

为什么不能在线程宏中使用匿名函数?

噪音史密斯

线程宏将先前的形式作为下一个形式的第二个元素插入。

(-> [1 2 3]
    #(map even? %))

变成

(fn* [1 2 3] [arg] (map even? arg))

您想要:

(->> [1 2 3]
     (map even?))

或者

(-> [1 2 3]
    (#(map even? %)))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么notifyAll()不能在线程实例中使用?

为什么我不能在列表中使用匿名函数?

为什么不能在函数参数列表中使用匿名对象作为参数?C ++

为什么我不能在 jasmine 的 expectAsync 中使用匿名函数?

为什么我不能在匿名类中使用<Class> .this?

为什么不能在函数中使用范围?

为什么不能在递归函数中使用yield

为什么不能在成员函数中使用这种模式?

为什么不能在函数中使用这些变量?

为什么我不能在Matlab中使用函数readframe

为什么我不能在匿名方法中的while循环中使用break?

为什么我们不能在Elixir保护子句或宏中使用其他功能?

Prolog:为什么我不能在新线程中使用read(-Term)?

为什么不能在宏之外使用值方法?

为什么我不能在线程之间发送 Mutex<*mut c_void>?

为什么我不能在类中使用参数构造函数?

为什么我不能在asm块中使用编译器内部函数?

为什么我不能在Kotlin Flow中使用rxJava.Single.create之类的emit函数?

为什么我不能在constexpr lambda函数中使用std :: tuple

为什么我们不能在jquery中使用setAtrribute函数?

为什么alloca不能在函数参数列表中使用?

为什么我不能在python3子进程中使用导出的bash函数?

为什么不能在JS函数中使用CSS类应用样式?

为什么我们不能在内核开发中使用C标准库函数?

为什么我不能在Service的构造函数中使用Context.getPackageManager

为什么不能在数组内部推送并在javascript的函数参数中使用它?

为什么不能在复制构造函数中使用std :: copy?

从技术角度来看,为什么不能在构造函数中使用shared_from_this?

为什么不能在函数中使用模板别名作为参数并自动推导?