编写一个函数,给定一个键和一个映射,如果该映射包含具有该键的条目并且其值为true
,则返回nil
。
我遇到的解决方案:
#(nil? (get %2 % true))
有人可以在
中解释true
的用法
(get %2 % true) ?
谢谢!
答案 0 :(得分:3)
这是默认值,如果没有密钥,将返回该值
python3.7
一些文档可以在这里找到
https://clojuredocs.org/clojure.core/get
因此,想法是;; key exists
(get {:a 1} :a 2)
#=> 1
;; key doesn't exist (default value is returned)
(get {:a 1} :b 2)
#=> 2
;; key exists and it's value is nil
(get {:a nil} :a 2)
#=> nil
;; key doesn't exist, nil is returned
(get {:a 1} :b)
#=> nil
将始终返回(get {:a 1} :b)
,因为密钥不存在。在这种情况下,nil
将返回true,这不是我们想要的。这就是为什么必须添加此默认值的原因。因此,仅当实际值为(nil? (get {:a 1} :b))
时才返回nil
。
值true在这里并不特殊。 85同样适用:除nil以外的任何值都可以解决问题。