2014-04-24 23 views
0

我有一个论点,不断采取我的向量参数和解构它,即使我试图通过几种方式避免它。如何避免Clojure函数解构参数向量?

错误:

clojure.lang.ArityException: Wrong number of args (5) passed to: core$build-par-sel$fn 

尝试1:

(defn build-par-sel 
    [& {:keys [^clojure.lang.PersistentVector par-vals best-val]}] 
    ; Do stuff... 
) 
(let [best 100.0 
      pars [1.0 2.0 3.0 4.0]] 
     (let [par-sel (build-par-sel 
          :par-vals pars 
          :best-val best)])))) 

尝试2:

(defn build-par-sel 
    [& {:keys [par-vals best-val]}] 
    ; Do stuff... 
) 
(let [best 100.0 
      pars [1.0 2.0 3.0 4.0]] 
     (let [par-sel (build-par-sel 
          :par-vals pars 
          :best-val best)])))) 

尝试3:

(defn build-par-sel 
    [par-vals best-val] 
    ; Do stuff... 
) 
(let [best 100.0 
      pars [1.0 2.0 3.0 4.0]] 
     (let [par-sel (build-par-sel pars best)])))) 
+0

粘贴的异常被报告在'build-par-sel'的定义内发生,在一些匿名函数build-par-sel中创建 - 我们不能在没有看到该函数主体的情况下解决这个问题。 – noisesmith

+0

@noisesmith请将此作为答案。你是对的。我在'build-par-sel'里面使用'apply'而不是'mapv'。这解释了我的困难!谢谢。 – user1559027

回答

1

您粘贴的异常会报告在build-par-sel的定义内发生,build-par-sel创建的某些匿名函数中。如果没有看到该功能的主体,我们不能再做更多的工作来解决这个问题。