例:Clojure Spectre:特定の値を持つマップキーを見つける方法は?マップ内
{"test-1" 23,
"test-2" 456,
"test-3" 23}
値23
を持つキーを見つける方法は?
例:Clojure Spectre:特定の値を持つマップキーを見つける方法は?マップ内
{"test-1" 23,
"test-2" 456,
"test-3" 23}
値23
を持つキーを見つける方法は?
あなたは幽霊を使って何かを検索する場合、亡霊/を選択を使用することをお勧めします。
(use 'com.rpl.specter)
(select [ALL #(= (second %) 23) FIRST]
{"test-1" 23,
"test-2" 456,
"test-3" 23})
これはまさに私が期待していて望んでいたソリューションの一種です!はるかに優雅な他の人。 – sumek
私はあなたがそれを行うには幽霊は必要ないと思うだけで、値でフィルタリングします。すなわち:
(->> {:key-1 10
:key-2 20
:key-3 10}
(filter (fn [[k v]] (= v 10)))
(map first))
==> [:key-1 :key-3]
スペクターと解決策は以下のとおりです。
(keys (specter/setval [specter/MAP-VALS #(not= 10 %)]
specter/NONE
{:key-1 10
:key-2 20
:key-3 10}))
実際には 'seq'は必要ありません。なぜなら、filterは入力を続けるからです。 –
はい、あなたは正しいです –
この入力には幽霊が必要ですか?深く入れ子構造ではありません。 –
よく分かりにくい例もありますし、幽霊なしで簡単に行うこともできますが、多くの些細なデータ構造と似ていることも同じです。しかし、質問そのものは明確なカットであり、もしOPからのeffordの表示があるだけであれば、 – cfrick