在Clojure中,如何使用存储在变量中的java类?
我该如何修复以下代码?
(def a java.lang.String)
(new a "1"); CompilerException java.lang.IllegalArgumentException: Unable to resolve classname: a
Run Code Online (Sandbox Code Playgroud)
为什么这个工作正常?
(def a str)
(a "1")
Run Code Online (Sandbox Code Playgroud) 在clojure中,我想聚合这些数据:
(def data [[:morning :pear][:morning :mango][:evening :mango][:evening :pear]])
(group-by first data)
;{:morning [[:morning :pear][:morning :mango]],:evening [[:evening :mango][:evening :pear]]}
Run Code Online (Sandbox Code Playgroud)
我的问题是:evening和:morning是多余的.相反,我想创建以下集合:
([:morning (:pear :mango)] [:evening (:mango :pear)])
Run Code Online (Sandbox Code Playgroud)
我提出了:
(for [[moment moment-fruit-vec] (group-by first data)] [moment (map second moment-fruit-vec)])
Run Code Online (Sandbox Code Playgroud)
有更惯用的解决方案吗?
我有一个 javascript 库,我想在 npm 上发布:我们称之为foo. 问题是客户端要使用的 javascript 文件位于dist文件夹下。因此,目前客户必须dist在他们的import声明中包含如下内容:
import { bar } from 'dist/foo'
Run Code Online (Sandbox Code Playgroud)
我想允许客户在foo不dist明确提及的情况下导入库,如下所示:
import { bar } from 'foo'
Run Code Online (Sandbox Code Playgroud)
有没有办法在客户package.json中foo或在package.json客户中添加属性?
备注:javascript 文件在dist文件夹中的原因是因为我的库是用clojurescript. 因此,源文件src在dist.
在Clojure中,在两个seq上并发迭代并在两个运行元素上调用函数的最佳方法是什么?例如:
(def a (range 3))
(def b (range 100 103))
(defn my-func [] ...) ;some custom code
Run Code Online (Sandbox Code Playgroud)
代码应该执行my-func 3次,如下所示:
(my-func 0 100)
(my-func 1 101)
(my-func 2 102)
Run Code Online (Sandbox Code Playgroud)
如何在不定义任何函数或宏的情况下实现这一目标?
在clojure中,可以像这样构造一些地图的键:
(let [{:keys [cpp js]} {:cpp 88 :js 90}]
(println js); 90
(println cpp); 88
)
Run Code Online (Sandbox Code Playgroud)
有没有办法解构地图的所有键?
也许是这样的:
(let [{:all-the-keys} {:cpp 88 :js 90}]
(println js); 90
(println cpp); 88
)
Run Code Online (Sandbox Code Playgroud) 使用clojure.string时,我收到以下警告
WARNING: replace already refers to: #'clojure.core/replace in namespace: tutorial.regexp, being replaced by: #'clojure.string/replace
WARNING: reverse already refers to: #'clojure.core/reverse in namespace: tutorial.regexp, being replaced by: #'clojure.string/reverse
Run Code Online (Sandbox Code Playgroud)
我的clojure脚本是:
(ns play-with-it
(:use [clojure.string]))
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这些警告?
我想要scale一个iframe mobile safari.
我在iframe里面包括一个div.
<html>
<body>
<div id="iframe_container">
<iframe src="http://jsfiddle.net/viebel/kTzDS/show" style="width:300px;height:300px;"/>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
现在我正在div使用此代码扩展:
$(function() {
$('#iframe_container').css({
'-webkit-transform': 'scale(0.7)',
'-webkit-transform-origin': '0 0 '
});
});?
Run Code Online (Sandbox Code Playgroud)
上的iOS/Safari浏览器,将iframe被切断(即不能完全看出),而在台式机/镀铬中,iframe是不会削减.
这是一个jsfiddle页面,代码如下:http://jsfiddle.net/viebel/tJQUH/
只是为了澄清:这是一个演示页面,演示了真正的问题 - 在iPad/iPhone Safari上打开时 - 所有这三行都应该具有相同的大小:http://jsfiddle.net/viebel/tJQUH/show
请告诉我该怎么办才能看到iframeMobile Safari完全未切割?
我想编写一个函数replace-several来接收一个字符串和一组替换并应用所有替换(替换时看到以前替换的结果).
我想到了以下界面:
(replace-several "abc" #"a" "c"
#"b" "l"
#"c" "j"); should return "jlj"
Run Code Online (Sandbox Code Playgroud)
两个问题:
备注:要进行单次替换,可以replace使用clojure.string.
我试过使用with-precision但它不起作用:
(.log js/console (with-precision 2 1.2345))
Run Code Online (Sandbox Code Playgroud)
所以我用过toFixed:
(.log js/console (.toFixed 1.2345 2))
Run Code Online (Sandbox Code Playgroud)
但我觉得这不是那种惯用的做法.
另外,我不明白为什么with-precision不起作用.
请激励我......