私がそうする場合、どの機能を使用できますか:
(the-function :a [1 2 3 4 5])
私は得る:
[{:a 1} {:a 2} {:a 3} {:a 4} {:a 5}]
回答ありがとうございます。
私がそうする場合、どの機能を使用できますか:
(the-function :a [1 2 3 4 5])
私は得る:
[{:a 1} {:a 2} {:a 3} {:a 4} {:a 5}]
回答ありがとうございます。
これを表現するにはいくつかの方法があります。
user> (defn the-function [key vals] (map hash-map (repeat key) vals))
#'user/the-function
user> (the-function :a [1 2 3 4 5])
({:a 1} {:a 2} {:a 3} {:a 4} {:a 5})
また
user> (defn the-function [key vals] (map (partial hash-map key) vals))
#'user/the-function
user> (the-function :a [1 2 3 4 5])
({:a 1} {:a 2} {:a 3} {:a 4} {:a 5})
またはマップの代わりに for を使用する:
user> (defn the-function [key vals] (for [val vals] {key val}))
#'user/the-function
user> (the-function :a [1 2 3 4 5])
({:a 1} {:a 2} {:a 3} {:a 4} {:a 5})
これらはシーケンスを返します。ベクトルにする必要がある場合は、それらを呼び出しでラップするvec
か、mapv を使用できます。
user> (defn the-function [key vals] (mapv (partial hash-map key) vals))
#'user/the-function
user> (the-function :a [1 2 3 4 5])
[{:a 1} {:a 2} {:a 3} {:a 4} {:a 5}]
user> (the-function :a `(1 2 3 4 5))
[{:a 1} {:a 2} {:a 3} {:a 4} {:a 5}]
これは、マップを使用するだけで実行できます。
(map (fn [v] {:a v}) [1 2 3 4 5]) ;; ({:a 1} {:a 2} {:a 3} {:a 4} {:a 5})
これはあなたが探しているものですか?
もちろん、このロジックを関数にラップすることもできます-十分に頻繁に使用する場合。