我们经常使用获取某个键的值并将其与
我完全看不到任何解决方法,这会影响一些数据处理方案,因为我们从非Clojure的数据源中获取数据,在这些数据源中,缺少键意味着“该键没有数据”,而带有
nil
进行比较的方法来测试哈希映射中是否存在某个键,例如:data
。(defn test-my-hash-map [my-hash-map]
(if (:data my-hash-map) 42 "plugh!"))
对于包含键:data
且值不为nil
的任何哈希表,此操作将生成42
。
(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代码中区分这些情况。
我的极其笨拙的解决方法是插入一个Java shim来检测差异,并在交给Clojure之前为特殊情况插入额外的列(键)。