代码
(defn sprintf [& args]
(with-out-str
(apply printf args)
*out*))
错误
(Chrome)
Uncaught TypeError: Cannot read property 'cljs$lang$maxFixedArity' of undefined
问题:
我究竟做错了什么?
(defn sprintf [& args]
(with-out-str
(apply printf args)
*out*))
(Chrome)
Uncaught TypeError: Cannot read property 'cljs$lang$maxFixedArity' of undefined
我究竟做错了什么?
错误:
Uncaught TypeError: Cannot read property 'cljs$lang$maxFixedArity' of undefined
...也许是历史上最令人费解的错误信息,实际上意味着:
您正在调用
apply
一个不存在(或不需要)的函数。
加油,未来的 Google 员工!
(def sprintf format)
似乎更容易。
我没有收到您看到的错误,我收到错误“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* 当前未实现”。)