2016-03-21 9 views

Antwort

6

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 
+0

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. –

Verwandte Themen