【发布时间】:2011-03-26 20:54:23
【问题描述】:
在查看 Clojure 时只是一个简单的问题....
鉴于以下 REPL 会话:
Clojure 1.2.0
user=> "bar"
"bar"
user=> (print "bar")
barnil
user=> (defn foo [] ("bar"))
#'user/foo
user=> (foo)
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn (NO_SOURCE_FILE:0)
user=> (print foo)
#<user$foo user$foo@65dcc2a3>nil
user=> (print (foo))
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn(NO_SOURCE_FILE:0)
为什么打印函数没有显示字符串“bar”?似乎读者试图将 foo (似乎是一个字符串)的返回值解析为一个函数? foo 应该如何定义 print 会将字符串写入命令行?
【问题讨论】: