warum ist die Verwendung des Einfädeln Makro - >> einen Fehler in der Cidre-repl Herstellung:Makros im Cider repl (zB ->)
(-> "x..")
// Unable to resolve symbol: -> in this context
warum ist die Verwendung des Einfädeln Makro - >> einen Fehler in der Cidre-repl Herstellung:Makros im Cider repl (zB ->)
(-> "x..")
// Unable to resolve symbol: -> in this context
dies geschieht, wenn Sie einen neuen Namensraum in der erstellen repl und haben noch nicht definiert alles drin. so dass die Aliase für die clojure.core Funktionen noch nicht etabliert:
Start durch einen neuen leeren Namensraum zu schaffen:
user> (in-ns 'i-dont-exist-yet)
#namespace[i-dont-exist-yet]
Dann versuchen Sie das Einfädeln Makro (oder irgendetwas von clojure.core) zu verwenden:
i-dont-exist-yet> (-> 1)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: -> in this context, compiling:(*cider-repl api*:47:18)
die das Symbol ->
im aktuellen Namespace-Lookup fehlschlägt, wenn es funktioniert, wenn Sie es sagen, welche Namespace explizit zu verwenden:
i-dont-exist-yet> (clojure.core/-> 1)
1
Es gibt eine Komfortfunktion in clojure.core, die alle erwarteten Verweise für Ihren neuen Namespace hinzufügt. Sie werden es nicht tun müssen, wenn Sie Ihren Namensraum aus einer Datei mit dem ns
Makro an der Spitze schaffen, weil ns
tun dies für Sie (unter anderem nützlichen Dingen):
i-dont-exist-yet> (clojure.core/refer-clojure)
nil
i-dont-exist-yet> (-> 1)
1
cool, danke. Ich fand heraus, dass es einfach nicht ausreicht, in den Ciderrepl (über In-ns ..) in den Namespace zu wechseln. C-c M-n erledigt den Job jedoch. –