into
は、以下の(間違いなく残虐な)機能よりも単一項目とリストを扱うよりエレガントな方法がありますか?シングルスとリストをクローズのリストに入れよう
(defn into-1-or-more
[this-list list-or-single]
(into this-list (flatten (conj [] list-or-single))))
:私は、リスト内の関数の結果とinto []
を使用して削減してコレクションを構築してい
(into-1-or-more [1 2 3 4] [5 6 7 8])
;[1 2 3 4 5 6 7 8]
:
(into-1-or-more [1 2 3 4] 5)
;[1 2 3 4 5]
かを。しかし、関数の中には単一のアイテムを返すものもあれば、アイテムのリストを返すものもあります。 Like:
(reduce #(into [] (% data)) [func-return-item func-return-list func-return-either])
最高の解決策は、代わりに次のようにすることですか?
(into [] (flatten (map #(% data) [func-return-item ...])
'reduce'は必要ない場合には使用しないでください。' reduce'は遅延しません。代わりに 'map'があります。 – Marcs
この特定のケースでは、すべてのデータがとにかく消費されます。もちろんあなたはもちろんです。 –
https://stuartsierra.com/2015/06/10/clojure-donts-heisenパラメーター – OlegTheCat