特定のキーの存在についてハッシュマップをテストすることがよくあり:data
ますnil
。
(defn test-my-hash-map [my-hash-map]
(if (:data my-hash-map) 42 "plugh!"))
これは、値を除く任意の値を持つ42
キーを含むハッシュマップを生成します。:data
nil
(map test-my-hash-map
[{:data "Hello!"} ; ~~> 42
{:no-data "Yikes!"} ; ~~> "plugh!"
{:data nil} ; ~~> "plugh!", but I need it to say 42 :(
])
これを行う方法がまったくわかりません。これは、Clojure 以外のソースからデータを取得しているデータ処理シナリオを台無しにしています。値のあるキーは、nil
「そこにデータがありますが、なんらかの理由であなたに渡すことができません」という意味です。Clojure コードでこれらのケースを区別する方法がわかりません。私の非常に厄介な回避策は、Clojure に引き渡す前に、違いを検出し、特別な場合に余分な列 (キー) を挿入する Java shim を挿入することです。