是否有一些惯用的scala类型将浮点值限制为由上限和下限定义的给定浮点范围?
具体我希望有一个浮点类型,只允许值介于0.0和1.0之间.
更具体的是我要写一个函数,它接受一个Int和另一个函数,在伪scala中将这个Int映射到介于0.0和1.0之间的范围:
def foo(x : Int, f : (Int => {0.0,...,1.0})) {
// ....
}
Run Code Online (Sandbox Code Playgroud)
已经搜查过电路板,但没有找到合适的.一些隐式魔法或自定义typedef也适合我.
给出以下scala代码:
var v1 = Vector("foo")
v1 :+= ""
Run Code Online (Sandbox Code Playgroud)
做了:+=什么,它与+=它的定义有何区别?
谢谢!
PS:是的,我确实搜索了这个,但没有找到任何东西.找到了这个(http://simply.liftweb.net/index-2.3.html#prev)教程.
split-at的clojure文档声明它采用元素集合并返回两个列表的向量,每个列表包含大于或小于给定索引的元素:
(split-at 2 [1 2 3 4 5])
[(1 2) (3 4 5)]
Run Code Online (Sandbox Code Playgroud)
我想要的是这个:
(split-at' 2 [1 2 3 4 5])
[[1 2] [3 4 5]]
Run Code Online (Sandbox Code Playgroud)
这是一个集合,分为两个集合,保持元素的顺序(如向量),最好没有性能损失.
通常的方法是什么,是否有任何性能优化的方法来做到这一点?
给定一个矩阵作为clojure中的向量向量:
(def A [[1 2 3 4]
[5 6 7 8]
[9 10 11 12]
[13 14 15 16]])
Run Code Online (Sandbox Code Playgroud)
我想把它分成四个季度:
'([[1 2]
[5 6]] ; tl
[[3 4]
[7 8]] ; tr
[[9 10]
[13 14]] ; bl
[[11 12]
[15 16]]) ;br
Run Code Online (Sandbox Code Playgroud)
这种愚蠢的方法是这样的(受到haskells子矩阵的启发):
(defn submatrix [A slice-col slice-row]
(let [tl (map (fn [col] (take slice-col col)) (take slice-row A))
tr (map (fn [col] (take slice-col col)) (drop slice-row A))
bl (map (fn [col] (drop slice-col …Run Code Online (Sandbox Code Playgroud)