标签: clojurescript

ClojureScript互操作

我试图找出如何在ClojureScript中访问Javascript对象属性.如果我提前知道该物业的名称,那很容易.让foo.bar我做的就是

(.-bar foo)
Run Code Online (Sandbox Code Playgroud)

有没有办法访问其名称仅在运行时已知的属性?我正在寻找相当于JS语法foo[dynamicBar]

interop clojure clojurescript

13
推荐指数
1
解决办法
6543
查看次数

如何在Windows中开始使用Clojure进行编程?

我知道可以在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" 但它不能解决问题.

clojure leiningen clojurescript

13
推荐指数
1
解决办法
7116
查看次数

你如何在ClojureScript中获得时间戳?

我怎样才能在ClojureScript中获得一个时间戳,类似于Unix的时间戳,一个代表当前时间和日期的数字,作为一个数字.我知道:

if (!Date.now) {
    Date.now = function() { return new Date().getTime(); }
}
Run Code Online (Sandbox Code Playgroud)

可以在Javascript中使用,但我想知道是否存在ClojureScript等效项

clojurescript

13
推荐指数
2
解决办法
5432
查看次数

Clojure允许多个具有相同名称的绑定

我试图理解我在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)

在这里我们可以看到,这些值实际上都是不同的变量,它们指向了封面下发生的事情,但是一些澄清将非常有用.

clojure clojurescript

12
推荐指数
3
解决办法
1233
查看次数

从ClojureScript调用JavaScript对象属性作为构造函数

我正在使用一个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)

调用作为另一个对象属性的构造函数的正确方法是什么?

javascript clojurescript

12
推荐指数
1
解决办法
2713
查看次数

Clojurescript:表达中的两个点

我正在使用Om,我没有完全理解以下表达式:

 (.. e -target -checked)
Run Code Online (Sandbox Code Playgroud)

这里,"e"是一个javascript事件,如果我理解的话,"-target -checked"是一种访问属性的方法.但是一开始的两个点怎么样?

clojurescript

12
推荐指数
1
解决办法
2541
查看次数

在ClojureScript中对字符串进行漂亮打印?

如何使用cljs.pprint返回字符串?

(cljs.pprint/pprint '(foo bar))
Run Code Online (Sandbox Code Playgroud)

希望这会返回一个字符串,而不是具有打印它的副作用.

与此问题类似,但对于CLJS,不是CLJ.

我怎样才能在Clojure中将PersistentHashMap打印成字符串?

clojure clojurescript

12
推荐指数
1
解决办法
3707
查看次数

如果key存在:update,否则:assoc

在reduce循环中考虑这个:

(if (contains? m k)
  (update m k conj v)
  (assoc m k [v]))
Run Code Online (Sandbox Code Playgroud)

有没有办法摆脱if语句?

clojure clojurescript

12
推荐指数
1
解决办法
971
查看次数

Clojure中mod和rem的区别

我无法理解这两个(mod&rem)函数之间的区别.

clojure clojurescript

12
推荐指数
2
解决办法
1471
查看次数

这些数学函数在Clojure中以撇号结尾是什么?

有迹象表明,与像省略号结尾一些数学函数:+',*',和-'.

非撇号和撇号之间有什么区别?

lisp functional-programming clojure clojurescript

12
推荐指数
1
解决办法
243
查看次数