5

代码

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

错误

(Chrome)

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

问题:

我究竟做错了什么?

4

3 回答 3

20

错误:

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

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

您正在调用apply一个不存在(或不需要)的函数。

加油,未来的 Google 员工!

于 2014-07-24T10:49:25.423 回答
1

(def sprintf format)似乎更容易。

于 2012-06-13T09:40:39.190 回答
0

我没有收到您看到的错误,我收到错误“No *print-fn* fn set for evaluation environment”。

如果您在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* 当前未实现”。)

于 2012-09-02T07:03:47.910 回答