內我已經得到了實現這樣的多方法命名空間:多個名稱空間;試圖調用方法於一體,輸出傳遞到另一個方法3方法
(ns a)
(defmulti funca (fn [system data] system))
(defmethod funca :add-z
[system data]
(conj data {:z 26}))
我有一個命名空間的第二次實施不同的多重方法:
(ns b)
(defmulti funcb (fn [system data new-element] system))
(defmethod funcb :add-element
[system data new-element]
(conj data new-element))
我得定義爲
(ns c
(:require [a :refer [funca]]
[b :refer [funcb]]))
我想創建命名空間下的方法,我可以一個第三命名空間調用爲例如
(funcc (funca :add-z {:a 1 :b 2 :c 3})
(funcb :add-element {:y 25}))
這應該採取的(funca :add-z {:a 1 :b 2 :c 3})
結果(這將是{:a 1 :b 2 :c 3 :z 26}
),並使用該結果作爲輸入到(funcb :add-y-and-count-elements {:y 25})
,其然後將返回的結果{:a 1 :b 2 :c 3 :y 25 :z 26}
。
在試圖定義funcc
,我試圖像
(ns c
(:require [a :refer [funca]]
[b :refer [funcb]]))
(defn funcc [funca funcb]
(partial funcb funca))
或
事情(defn funcc [funca funcb]
(funcb (funca)))
或
(defn funcc [funca funcb]
(-> funca
funcb))
但是當在REPL運行任何這些和調用funcc,我得到
數錯誤參數的個數(2)傳遞到:B/eval19367/FN
什麼是正確的語法用於定義funcc
,因此,它可能需要傳遞給它的第一個參數的輸出,用它作爲第二個參數的輸入,然後返回結果?