【问题标题】:How to swap 2 elements in Vector of Vector如何在向量的向量中交换 2 个元素
【发布时间】:2014-12-15 04:29:42
【问题描述】:

如何扩展它: What is the idiomatic way to swap two elements in a vector

本质上是一个二维数组?

[[1 2 3] [4 5 6] [7 8 9]] --> [[1 2 5] [4 3 6] [7 8 9]]

【问题讨论】:

    标签: clojure


    【解决方案1】:

    使用get-inassoc-in

    (defn swap-in [vv p1 p2]
      (let [v1 (get-in vv p1)
            v2 (get-in vv p2)
        (-> vv 
            (assoc-in p1 v2)
            (assoc-in p2 v1))))
    

    那么现在:

    (def my-vec [[1 2 3] [4 5 6] [7 8 9]])
    (swap-in my-vec [0 2] [1 1])
    => [[1 2 5] [4 3 6] [7 8 9]]
    

    这将适用于嵌套到任何“深度”的向量,只要 my-vec 中的指定位置实际存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多