我试图找出如何在ClojureScript中访问Javascript对象属性.如果我提前知道该物业的名称,那很容易.让foo.bar我做的就是
(.-bar foo)
Run Code Online (Sandbox Code Playgroud)
有没有办法访问其名称仅在运行时已知的属性?我正在寻找相当于JS语法
foo[dynamicBar]
我知道可以在Eclipse中使用CounterClockwise,但我一直在尝试让Leiningen工作,以便我可以使用ClojureScript.
我使用git clone下载了leiningen.然后它说运行脚本.我试过从PowerShell内部和git bash环境中自行安装lein.
在每一个我都得到一个关于未能下载leiningen的错误(我认为我使用git clone?hmm).这很有趣,因为有人会阅读包含对Windows没有意义的内容的指令.
例如,在Powershell中,Windows不了解导出HTTP_CLIENT.只是在git bash中我收到一条消息,说我的HTTP客户端证书存储可能没有正确的证书颁发机构.
然后建议这个命令运行正常,export HTTP_CLIENT="curl --insecure -f -L -o"
但它不能解决问题.
我怎样才能在ClojureScript中获得一个时间戳,类似于Unix的时间戳,一个代表当前时间和日期的数字,作为一个数字.我知道:
if (!Date.now) {
Date.now = function() { return new Date().getTime(); }
}
Run Code Online (Sandbox Code Playgroud)
可以在Javascript中使用,但我想知道是否存在ClojureScript等效项
我试图理解我在Clojure中注意到的一些行为.
可以使用重复多次的相同绑定名创建let绑定:
(let [a 1 a 2 a b] a)
; (= a 2)
(let [a 1 a 2 a 3] a)
; (= a 3)
Run Code Online (Sandbox Code Playgroud)
我明白让绑定进行评估,这一切都很有意义.
我对文档的理解是"用let创建的本地人不是变量.一旦创建,他们的价值观永远不会改变!"
上述语法是否实际更改了绑定的值?
这感觉它应该引发错误.
作为一种旁注:
有趣的是,您可以使用clojurescript输出上面的JS:
var a__36584 = 1, b__36585 = 2, a__36586 = b__36585;
var a__30671 = 1, a__30672 = 2, a__30673 = 3;
Run Code Online (Sandbox Code Playgroud)
在这里我们可以看到,这些值实际上都是不同的变量,它们指向了封面下发生的事情,但是一些澄清将非常有用.
我正在使用一个JavaScript库,它将构造函数公开为全局对象的属性.
在JavaScript中,我可以像这样调用构造函数.
var thing = new Library.Thing();
Run Code Online (Sandbox Code Playgroud)
如何在ClojureScript中调用构造函数?这些都不起作用.
; These all cause compiler errors
(new (.-Thing js/Library)) ; First arg to new must be a symbol
(new (.Thing js/Library))
(new .-Thing js/Library)
(new .Thing js/Library)
(new js/Library/Thing) ; Invalid token: js/Library/Thing
; These all compile to different JS than I am looking for
((.-Thing js/Library).) ; Library.Thing.call(null, _SLASH_);
((.Thing js/Library).) ; Library.Thing().call(null, _SLASH_);
Run Code Online (Sandbox Code Playgroud)
如果我使用js*它可以正常工作,但这是作弊,对吧?
(js* "new Library.Thing()")
Run Code Online (Sandbox Code Playgroud)
调用作为另一个对象属性的构造函数的正确方法是什么?
我正在使用Om,我没有完全理解以下表达式:
(.. e -target -checked)
Run Code Online (Sandbox Code Playgroud)
这里,"e"是一个javascript事件,如果我理解的话,"-target -checked"是一种访问属性的方法.但是一开始的两个点怎么样?
如何使用cljs.pprint返回字符串?
(cljs.pprint/pprint '(foo bar))
Run Code Online (Sandbox Code Playgroud)
希望这会返回一个字符串,而不是具有打印它的副作用.
与此问题类似,但对于CLJS,不是CLJ.
在reduce循环中考虑这个:
(if (contains? m k)
(update m k conj v)
(assoc m k [v]))
Run Code Online (Sandbox Code Playgroud)
有没有办法摆脱if语句?
有迹象表明,与像省略号结尾一些数学函数:+',*',和-'.
非撇号和撇号之间有什么区别?