gpt4 book ai didi

map - 为什么 clojure 的 map 在 println 中表现得那样?

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

你好,我正在学习 clojure,我想了解发生了什么,当我打字时

(map println '(1 2 3 4))

我期待像
1
2
3
4

但我得到了
(1
2
nil 3
nil 4
nil nil)

这只是我编的一个例子。我只是想了解发生了什么。也许与懒惰有关?

最佳答案

运行结果(map println ...)是运行 println 的结果的集合,它为零。所以结果是(nil nil nil nil)的集合REPL 打印的内容。
在打印时, println 调用也会将输出打印到 REPL,因此您会看到两者混合在一起。

如果您定义它而不打印它:

user=> (def result (map println [1 2 3 4]))
#'user/result

最初什么也没有发生,因为结果是懒惰的。如果我们在不使用 dorun 打印的情况下实现它
user=> (dorun result)
1
2
3
4
nil

我们看到了每个 println 的副作用,然后是 dorun 的返回值这是零。然后我们可以通过评估结果来查看结果的内容
user=> result
(nil nil nil nil)

并看到它返回一堆 nil

关于map - 为什么 clojure 的 map 在 println 中表现得那样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14062541/

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