令人困惑的ClojureScript错误

时间:2012-06-13 09:28:46

标签: clojure

代码

(defn sprintf [& args]
  (with-out-str
    (apply printf args)
    *out*))

错误

(Chrome)

Uncaught TypeError: Cannot read property 'cljs$lang$maxFixedArity' of undefined 

问题:

我做错了什么?

3 个答案:

答案 0 :(得分:20)

错误:

Uncaught TypeError: Cannot read property 'cljs$lang$maxFixedArity' of undefined

...也许是历史上最令人困惑的错误信息,实际上意味着:

  

你在一个不存在(或者不需要)的函数上调用apply

摇滚,未来的Google员工!

答案 1 :(得分:1)

(def sprintf format)似乎更容易。

答案 2 :(得分:0)

我没有收到您看到的错误,我收到错误“No * print-fn * fn为评估环境设置”。

如果您在https://github.com/clojure/clojurescript/blob/master/src/cljs/cljs/core.cljs浏览来源,则会在* print-fn *的文档中找到此消息:

“每个运行时环境都提供了一种不同的打印输出方式。   任何* print-fn *函数都将被传递   字符串应该打印。“

所以我建议你玩* print-fn * - 或者@amalloy建议,直接使用'format'。

(顺便说一下,如果你看https://github.com/clojure/clojurescript/wiki/Differences-from-Clojure,则表示“* out *目前尚未实施”。)