3

map によって生成されたレイジー seq のメンバーを個別の引数として別の関数にフィードしたいと考えています。(怠惰な) seq をスプライスする関数はありますか?

4

1 に答える 1

6

applyを使用します。

(defn f [a b c d e]
  (str "a = " a " b = " b " c = " c " d = " d " e = " e))

(println (apply f (range 5)))

;; prints: a = 0 b = 1 c = 2 d = 3 e = 4

ご覧のとおり、関数 f は 5 つの引数を取り、(範囲 5) は 5 つの引数の遅延シーケンスを返します。

seq のサイズが関数が期待する引数の量と同じであることを確認してください。そうしないと、実行時に例外が発生します。

于 2011-06-29T18:16:04.687 に答える