Clojure - 在向量向量上调用函数

时间:2017-08-23 15:14:03

标签: clojure

我有一个向量[[1 2 3 4] [5 6]],我想在此向量上调用函数double以获取[[1.0 2.0 3.0 4.0] [5.0 6.0]]

我可以做(mapv (fn [x] (mapv double x)) [[1 2 3 4] [5 6]])这会给我我想要的东西

我想知道是否有更好/更快的方法。

由于

1 个答案:

答案 0 :(得分:1)

我不知道我必须称之为“更好”,但每当我必须将调用嵌套到地图时,我个人倾向于使用for。我个人觉得它更具可读性。

(def vecs [[1 2 3 4] [5 6]])

(for [r vecs] (for [x r] (double x)))

数据以列表形式返回,我假设将它保存在向量中并不是特别重要。如果你这样做,那么它的可读性就会降低一些,我可能更喜欢你的方法。

(vec (for [r vecs] (vec (for [x r] (double x)))))