コード
(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)
簡単に思えます。
あなたが見たエラーが表示されません。「評価環境に *print-fn* fn が設定されていません」というエラーが表示されます。
https://github.com/clojure/clojurescript/blob/master/src/cljs/cljs/core.cljsでソースを掘り下げると、 *print-fn* のドキュメントに次のメッセージが見つかります。
「各ランタイム環境は、出力を印刷するためのさまざまな方法を提供します。 *print-fn* がバインドされている関数には、印刷する必要がある文字列が渡されます。」
したがって、*print-fn* で遊んでみることをお勧めします。または、@amaloy が提案したように、「format」を直接使用してください。
(ちなみにhttps://github.com/clojure/clojurescript/wiki/Differences-from-Clojureを見ると、「*out* は現在実装されていません」と表示されます。)