2014-04-24 24 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創建的某些匿名函數中。如果沒有看到該功能的主體,我們不能再做更多的工作來解決這個問題。