gpt4 book ai didi

Clojure 不断和映射函数

转载 作者:行者123 更新时间:2023-12-03 00:26:40 24 4
gpt4 key购买 nike

为什么这段 Clojure 代码是这样的:

user=> (map (constantly (println "Loop it.")) (range 0 3))

产生此输出:

Loop it.
(nil nil nil)

我希望它打印“Loop it”三次,作为对函数求值三次的副作用。

最佳答案

constantly 不会多次评估其参数。它是一个函数,而不是宏,因此参数在持续运行之前仅计算一次。 constantly 所做的就是获取其(已评估的)参数并返回一个函数,该函数每次调用时都会返回给定值(无需重新评估任何内容,因为正如我所说,该参数已在 不断甚至运行)。

如果您只想为范围内的每个元素调用 (println "Loop it"),则应该将其作为要映射的函数传递,而不是不断。请注意,您实际上必须将其作为函数而不是计算表达式传递。

关于Clojure 不断和映射函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11613135/

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