我把它键入Clojure REPL(使用enclojure Netbeans插件):
user=> "hello, world"
"hello, world"
nil
Run Code Online (Sandbox Code Playgroud)
什么是零?
Bri*_*per 21
每个函数或宏调用都返回一个Clojure中的值,甚至是if语句或循环结构或顶级函数定义或print语句,在其他语言中是"语句".Lisps中没有语句/表达二分法; 一切都是表达.
因此println,朋友打印到标准输出作为副作用并返回nil,大多数函数没有任何有用的返回.
但是在REPL中键入文字字符串应该返回字符串本身,就像在digitalross的帖子中一样.
user> (println "hello world")
hello world
nil
user> "hello world"
"hello world"
user>
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,该hello world行是打印到标准输出的行println. nil是返回值println.在第二种情况下,"hello world"是"hello world"字符串求值为自身的返回值.在这种情况下,没有任何内容打印到标准输出.
(SLIME和其他一些REPL接口将有助于使标准输出(hello world上面的行)与您在REPL(nil上面)中输入的值的颜色不同,因为它可能会造成混淆.)
这是你应该在REPL上看到的.你发布的内容必须是Enclojure的工件.
| 归档时间: |
|
| 查看次数: |
2329 次 |
| 最近记录: |