Clojure:从向量的每个向量获取值,并将其作为参数传递给另一个函数

时间:2018-10-22 22:07:18

标签: vector clojure

我想从vector的向量中获取值,并希望将该值作为参数传递给另一个函数。我想调用其他函数,就像我在vector的向量集合中拥有的vector一样。

例如:

这是演示代码,将解释我的尝试

    (defn demo
            [arg1 arg2 arg3 arg4 arg5]
            (println "====== in Demo=======")
            (println arg1 arg2 arg3 arg4 arg5)
    )

    (def vv [["item1" "item2" "item3" 4] ["item5" "item6" "item7" 80.0] .....])

我想要一个可以遍历vv并获取每个v的值并将其作为参数传递给 demo

的函数
    (def somefun 
    iterate [i vv] demo (get v 0) (get v 1) (get v 2) (get v 3)) 

;;对于vv中的所有向量都应重复此步骤

1 个答案:

答案 0 :(得分:0)

由于功能语言中的迭代通常意味着map,所以我会这样:

(defn somefun [vv]
    (map (partial apply demo) vv)

地图遍历所有向量。 partial函数将每个v附加到映射函数。最后,您为(apply demo v)中的每个v呼叫vv

apply提取向量并将其元素转换为demo的参数。