7
マップ内のいくつかの可能なキーの最初の非nil値を取得する最適な方法は何ですか。マップで可能な値の1つを取得する慣習的な方法はありますか?
例:
(get-first-matching {:fum 4 :bar 41 :baz 45} [:foo :bar :baz])
;=> 41
マップ内のいくつかの可能なキーの最初の非nil値を取得する最適な方法は何ですか。マップで可能な値の1つを取得する慣習的な方法はありますか?
例:
(get-first-matching {:fum 4 :bar 41 :baz 45} [:foo :bar :baz])
;=> 41
some。
user=> (some {:fum 4 :bar 41 :baz 45} [:foo :bar :baz])
41
正確に何をお探しですか? :) – Annan
ここでは、マップがキーのコレクションで呼び出される述語関数としてここで使用されていることに注意することは興味深いです。したがって、あなたが得るのは厳密に最初の非ゼロ値ではなく、最初の "真実"値です。 '(いくつかの{:foo nil:bar false:baz 20} [:foo:bar:baz])'を試してください。 –
そうですね、値がnilでもfalseでも動作するバージョンは、 '(when-let [[k v](some m(find m%)[:foo:bar:baz])]])'のようになります。 – amalloy