私は関数(def my-func [a b c d])
のベクトルを持っています。各関数は最後の関数の出力を入力として取ります。私はそれらを介して入力をスレッドしたい、どのように私はそれを行うのですか?関数のベクトルを通るスレッド
次のフォームにどうすればいいですか?(-> in a b c d)
?
おかげで、 Murtaza
私は関数(def my-func [a b c d])
のベクトルを持っています。各関数は最後の関数の出力を入力として取ります。私はそれらを介して入力をスレッドしたい、どのように私はそれを行うのですか?関数のベクトルを通るスレッド
次のフォームにどうすればいいですか?(-> in a b c d)
?
おかげで、 Murtaza
あなたはcomp
を使用しますが、それが正しい
((comp d c b a) 10)
を左に機能の実行や知ることができます
((apply comp my-fns) 10)
は、最初の関数に10を渡し、次の関数に結果を渡します。
私はあなたがreduce
機能を使用することができると思う:
(def fns [inc inc inc])
(reduce (fn [v f] (f v)) 10 fns)
ありがとうございましたdAni、素晴らしい方法です! – murtaza52
これは、エレガントな解決のために何@fogusは[Clojureの中ツグミ]で話していた(http://blog.fogus.me/2010/09/28/thrush-in-clojure-redux/) –
感謝のことを思い出しますスミス – murtaza52
ようこそ。いくつかの関数を引数として受け取り、各関数に引数を適用して結果のベクトルを返す他の関数['juxt'](http://clojuredocs.org/clojure_core/clojure.core/juxt)があります。' (juxt + - /)3 2)=> [5 1 6 3/2] ' –