错误数量的参数 (2) 传递给:core/first
Wrong number of args (2) passed to: core/first
我是 Clojure 的新手,我在迭代数据时遇到了一些问题。
我写的代码如下:
(defn save-monthly-targets
"Parse Monthly Targets Data and Save"
[monthlyTargets]
(println "Save Monthly " monthlyTargets)
(if (first monthlyTargets)
(let [month (first monthlyTargets :month)
year (first monthlyTargets :year)
name (first monthlyTargets :name)]
(do
(println "Calling Save Method" month)
(users/set-monthly-target month year name)
(save-monthly-targets (rest monthlyTargets))))))
当我调用函数时:
(save-monthly-targets [
{:month "May", :year "2021", :target "1200"},
{:month "May", :year "2016", :target "1200"}
])
我在 (if (first monthlyTargets) 语句中得到了错误的参数数量错误。
例外情况是:
ArityException Wrong number of args (2) passed to: core/first
clojure.lang.AFn.throwArity
有人能指出这里有什么问题吗?
非常感谢。
如错误所述,您将两个参数传递给 first
,例如
(first monthlyTargets :month)
当你想要的时候:
(let [month (:month (first monthlyTargets))
...])
您可以使用解构一次匹配所有值:
(let [{:keys [month year name]} (first monthlyTargets)
...])
我是 Clojure 的新手,我在迭代数据时遇到了一些问题。
我写的代码如下:
(defn save-monthly-targets
"Parse Monthly Targets Data and Save"
[monthlyTargets]
(println "Save Monthly " monthlyTargets)
(if (first monthlyTargets)
(let [month (first monthlyTargets :month)
year (first monthlyTargets :year)
name (first monthlyTargets :name)]
(do
(println "Calling Save Method" month)
(users/set-monthly-target month year name)
(save-monthly-targets (rest monthlyTargets))))))
当我调用函数时:
(save-monthly-targets [
{:month "May", :year "2021", :target "1200"},
{:month "May", :year "2016", :target "1200"}
])
我在 (if (first monthlyTargets) 语句中得到了错误的参数数量错误。
例外情况是:
ArityException Wrong number of args (2) passed to: core/first clojure.lang.AFn.throwArity
有人能指出这里有什么问题吗?
非常感谢。
如错误所述,您将两个参数传递给 first
,例如
(first monthlyTargets :month)
当你想要的时候:
(let [month (:month (first monthlyTargets))
...])
您可以使用解构一次匹配所有值:
(let [{:keys [month year name]} (first monthlyTargets)
...])