js/something
dient zum Zugriff auf ein js-Objekt, aber danach sollten Sie keine Punkte verschachteln, da es sich nicht um eine clojure-kompatible Syntax handelt und diese entfernt wird. In älteren Versionen des Compilers (2138) funktioniert Ihr Code, aber es ist möglich, dass er in neueren Versionen des Compilers veraltet ist. Welche Version verwendest du?
Der richtige Weg wäre die Verwendung von js interop wie folgt: [Vorbehalt: siehe Kommentar unten von David Nolen, ClojureScript, leitender Entwickler]
%Vor%Und noch kürzer, da console.log bereits variadic ist (einfach einen Alias erstellen):
%Vor%Sie können println auch einfach verwenden, wenn Sie dies zuerst an die Spitze Ihrer Datei setzen: (enable-console-print!).
Mit console.log
ist es sinnvoll, ein Makro anstelle einer Funktion zu verwenden. Wenn Sie log
als Funktion implementieren, werden alle Nachrichten mit der Zeilennummer von wo Ihre log
Funktion definiert ist, protokolliert.
Ein Makro löst dieses Problem durch Erzeugen von Inline-Code während der Kompilierung. Es ist wichtig zu verstehen, dass Makros zur Kompilierungszeit ausgeführt werden .
Definieren Sie dieses Makro in macros.cljc
:
'
oder quote
aber:
~
oder unquote
eingefügt werden, wie ich es für msgs
getan habe, indem ich @
hinzugefügt habe, um mehrere Argumente zu entpacken: ~@msgs
. Weitere Informationen über Syntaxzitat . Rufen Sie es dann von core.cljs
:
Tags und Links debugging clojurescript