我有一个矢量[[[1 2] [3 4]] [[5 6] [7 8]] [9 10] 11].我想将一个函数应用于此向量,但保留数据结构.
例如,我想为每个数字添加1,但保留数据结构以获得结果[[[2 3] [4 5]] [[6 7] [8 9]] [10 11] 12].这可能吗?
我试过了
(map #(+ 1 %) (flatten [[[1 2] [3 4]] [[5 6] [7 8]] [9 10] 11]))
=> (2 3 4 5 6 7 8 9 10 11 12)
Run Code Online (Sandbox Code Playgroud)
但是你可以看到数据结构不一样.
有没有可能,需要一个函数(2 3 4 5 6 7 8 9 10 11 12)来[[[2 3] [4 5]] [[6 7] [8 9]] [10 11] 12]
我想也许可以使用postwalk,但我不确定这是否正确.
任何帮助将非常感激
你可以使用postwalk:
(require '[clojure.walk :as walk])
(let [t [[[1 2] [3 4]] [[5 6] [7 8]] [9 10] 11]]
(walk/postwalk (fn [x] (if (number? x) (inc x) x)) t))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
197 次 |
| 最近记录: |