gpt4 book ai didi

clojure - 为什么匿名函数不能与 clojure 中的 map 一起使用?

转载 作者:行者123 更新时间:2023-12-03 23:27:40 37 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Constructing a map on anonymous function in Clojure

(3 个回答)


去年关闭。




当我执行以下操作时,它会起作用:

user> (#(+ % 8) 7)
15

但为什么这不起作用?
user> (#({:a %}) 7)
Execution error (ArityException) at user/eval74597$fn (form-init937950372947324749.clj:760).
Wrong number of args (0) passed to: clojure.lang.PersistentArrayMap

预期结果:{:a 7}

最佳答案

匿名与 #()是一个阅读器宏。如果查看生成的代码,就很明显了,为什么它不起作用(主体被调用):

user=> '#({:a %})
(fn* [p1__8266#] ({:a p1__8266#}))

因此 arg 被作为一张 map 的键传递并立即调用,因为这是 reader 宏所做的。通常安全的方法是使用 do , 当您想使用数据文字时:
user=> (#(do {:a %}) 7)
{:a 7}

或者,当然,使用各种功能,如 hash-map来创建数据结构。

关于clojure - 为什么匿名函数不能与 clojure 中的 map 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60340120/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com