我在Clojure REPL中输入了以下内容(使用enclojure Netbeans插件):
user=> "hello, world"
"hello, world"
nilnil是关于什么的?
发布于 2009-09-12 21:34:36
每次函数或宏调用Clojure都会返回一个值,甚至像if语句、循环构造、toplevel函数定义或打印语句,在其他语言中也是“语句”。Lisp中没有语句/表达式二分法;一切都是表达式。
因此,println和朋友打印到标准输出作为副作用并返回nil,就像大多数函数一样,没有任何有用的东西可以返回。
但是在REPL中输入文字字符串应该会返回字符串本身,就像在digitalross' post中一样。
user> (println "hello world")
hello world
nil
user> "hello world"
"hello world"
user>在第一种情况下,println将hello world行打印到标准输出。nil为println的返回值。在第二种情况下,"hello world"是"hello world"的返回值,因为字符串的计算结果是自身。在这种情况下,不会将任何内容打印到标准输出。
(SLIME和其他一些REPL接口将使标准输出(上面的hello world行)与您在REPL (上面的nil)中键入的返回值不同,因为否则可能会造成混淆。)
这是您在REPL中应该看到的内容。你发布的东西一定是Enclojure的神器。
发布于 2009-09-12 20:46:55
无法复制..。
在Clojure 1.0.0上它不能为我做到这一点--
$ java -cp clo*.jar clojure.lang.Repl
Clojure 1.0.0-
user=> "hello, world"
"hello, world"
user=> 发布于 2009-09-16 20:30:47
最近出现了一些与在windows下将CRLF行结束序列解释为两个不同表达式相关的错误。clojure中字符串的返回值应该是字符串本身。
https://stackoverflow.com/questions/1416067
复制相似问题