我使用 emacs , cider , cljsbuild 以及奥斯汀 ClojureScript 新手在Windows计算机上使用 slimerjs 。我注意到有时当我输入clojurescript repl时,额外的^M
字符和nil
被附加到输出中(但返回值不是nil,如输出所示)下面的代表)。 ^M
之前的输出显示为红色,而nil
输出显示为黑色。可能导致这种情况的原因,我该如何解决这个问题? (我应该将此作为问题报告给项目的其中一个跟踪器吗?)
cljs.user> 1
1
cljs.user> true
true
cljs.user> (reduce + [1 2 3])
6
cljs.user> (list [1 2 3])
([1 2 3])
cljs.user> reduce
#<function (a,e,f){switch(arguments.length){case 2:return b.call(this,
a,e);case 3:return c.call(this,a,e,f)}throw Error("Invalid arity: "+arguments.length);}>^M
nil
cljs.user> js/document
#<[object HTMLDocument]>^M
nil
cljs.user> (def d js/document)
#<[object HTMLDocument]>^M
nil
cljs.user> (nil? d)
false
答案 0 :(得分:2)
^ M是windows行结束。回答如何在Emacs中隐藏它here。
一般情况下打印nil
是正常行为,并不是Clojurescript或Emacs特有的。所有表单都返回一个值(可能是nil
),也可能产生副作用:
cljs.user> (println 1)
1 ; Side effect - printed value
nil ; Result of evaluation
然而,nil
,js/document
和类似的&#34; not-nil&#34;返回(def d js/document)
表格是奥斯汀的特定行为,可能被视为小错误。