我将其输入 Clojure REPL(使用 enclojure Netbeans 插件):
user=> "hello, world"
"hello, world"
nil
零是什么意思?
Clojure 中的每个函数或宏调用都会返回一个值,甚至是if
语句或循环结构或顶级函数定义或打印语句,在其他语言中是“语句”。 Lisps 中不存在语句/表达式二分法;一切都是一种表达。
So println
和朋友打印到标准输出作为副作用并返回nil
,就像大多数没有任何有用返回值的函数一样。
但是在 REPL 中输入文字字符串应该返回字符串本身,如下所示数字罗斯' post.
user> (println "hello world")
hello world
nil
user> "hello world"
"hello world"
user>
在第一种情况下,hello world
line 是打印到标准输出的内容println
. nil
是返回值println
。在第二种情况下,"hello world"
是返回值"hello world"
因为字符串的计算结果是其自身。在这种情况下,不会将任何内容打印到标准输出。
(SLIME 和其他一些 REPL 接口将有助于为标准输出着色(hello world
上面的行)与您在 REPL 中键入的返回值不同(nil
上面),因为否则可能会令人困惑。)
这就是您应该在 REPL 中看到的内容。您发布的内容一定是 Enclojure 的产物。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)