clojure将数组分解为单个参数
我正在尝试使用clojure.java.jdbc进行多重插入 多重插入的结构是这样的clojure将数组分解为单个参数,clojure,Clojure,我正在尝试使用clojure.java.jdbc进行多重插入 多重插入的结构是这样的 (jdbc/multi-insert! db-spec :table_name {:col1 "d1" :col2 "d2" :col3 "d3"} {:col1 "d4" :col2 "d5" :col3 "d6"}...) [ {:col1 "d1" :col2 "d2" :col3 "d3"} {:col1 "d4" :col2 "d5" :col3 "d6"} ]
(jdbc/multi-insert! db-spec :table_name
{:col1 "d1" :col2 "d2" :col3 "d3"}
{:col1 "d4" :col2 "d5" :col3 "d6"}...)
[
{:col1 "d1" :col2 "d2" :col3 "d3"}
{:col1 "d4" :col2 "d5" :col3 "d6"}
]
然而,我有这样一个向量中的数据
(jdbc/multi-insert! db-spec :table_name
{:col1 "d1" :col2 "d2" :col3 "d3"}
{:col1 "d4" :col2 "d5" :col3 "d6"}...)
[
{:col1 "d1" :col2 "d2" :col3 "d3"}
{:col1 "d4" :col2 "d5" :col3 "d6"}
]
如何分解数组并将内容作为单个参数传递?您可以使用参数列表调用函数
> (str "Clo" "jure")
"Clojure"
> (apply str ["Clo" "jure"])
"Clojure"
在您的情况下,您希望应用jdbc/multi-insert!使用包含db spec、:table_name和现有向量中的所有映射的列表
(def data [{:col1 "d1" :col2 "d2" :col3 "d3"}
{:col1 "d4" :col2 "d5" :col3 "d6"}])
(apply
jdbc/multi-insert!
(conj [db-spec :table_name] data))
我们只是使用创建参数列表,然后将其传递给apply
正如Alex指出的,apply的签名实际上允许您首先传递内联参数,只要最后一个参数是列表。你可以不用conj重写这个例子
可以使用调用具有参数列表的函数
> (str "Clo" "jure")
"Clojure"
> (apply str ["Clo" "jure"])
"Clojure"
在您的情况下,您希望应用jdbc/multi-insert!使用包含db spec、:table_name和现有向量中的所有映射的列表
(def data [{:col1 "d1" :col2 "d2" :col3 "d3"}
{:col1 "d4" :col2 "d5" :col3 "d6"}])
(apply
jdbc/multi-insert!
(conj [db-spec :table_name] data))
我们只是使用创建参数列表,然后将其传递给apply
正如Alex指出的,apply的签名实际上允许您首先传递内联参数,只要最后一个参数是列表。你可以不用conj重写这个例子
不需要合并到arg列表中,apply是可变的,只有最后一个参数扩展为列表。不需要合并到arg列表中,apply是可变的,只有最后一个参数扩展为列表。