"hello, world" "hello, world" nil 零是怎么回事? 最-6ren">
gpt4 book ai didi

clojure - 当您在 Clojure REPL 中键入 "hello, world"时,为什么会显示 'nil' ?

转载 作者:行者123 更新时间:2023-12-04 01:31:32 25 4
gpt4 key购买 nike

我在 Clojure REPL 中输入了这个(使用 enclojure Netbeans 插件):

user=> "hello, world"
"hello, world"
nil

零是怎么回事?

最佳答案

在 Clojure 中,每个函数或宏调用都会返回一个值,甚至像 if 这样的值。语句或循环结构或顶级函数定义或打印语句,在其他语言中是“语句”。 Lisps 中没有语句/表达式二分法;一切都是一种表达。

所以println和 friend 打印到标准输出作为副作用并返回 nil ,就像大多数没有任何有用返回的函数一样。

但是在 REPL 中键入文字字符串应该返回字符串本身,如 digitalross'邮政。

user> (println "hello world")
hello world
nil
user> "hello world"
"hello world"
user>

在第一种情况下, hello world line 是 println 打印到标准输出的内容. nilprintln 的返回值.在第二种情况下, "hello world""hello world" 的返回值因为字符串对自身求值。在这种情况下,没有任何内容打印到标准输出。

(SLIME 和其他一些 REPL 接口(interface)将有助于为标准输出(上面的 hello world 行)着色,不同于您在 REPL 中键入的返回值(上面的 nil),否则可能会造成混淆。)

这是你应该在 REPL 中看到的。您发布的内容必须是 Enclojure 的神器。

关于clojure - 当您在 Clojure REPL 中键入 "hello, world"时,为什么会显示 'nil' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1416067/

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