What is the idiomatic way to swap two elements in a vector

烈酒焚心 提交于 2019-12-30 03:01:06

问题


Is there a better or more concise way to do the following?

(defn swap [v i1 i2]
  "swap two positions in a vector"
  (let [e1 (v i1)
        e2 (v i2)]
       (-> (assoc v i1 e2)
       (assoc i2 e1))))

回答1:


I can't think of a particularly elegant solution, either. Here's how I'd write it though:

(defn swap [v i1 i2] 
   (asso­c v i2 (v i1) i1 (v i2)))­


来源:https://stackoverflow.com/questions/5979538/what-is-the-idiomatic-way-to-swap-two-elements-in-a-vector

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!