编写给定键和映射的函数时,返回“ true”时“ true”有什么用?

时间:2019-01-29 16:18:32

标签: clojure

编写一个函数,给定一个键和一个映射,如果该映射包含具有该键的条目并且其值为true,则返回nil

我遇到的解决方案:

#(nil? (get %2 % true))

有人可以在

中解释true的用法
(get %2 % true) ?

谢谢!

1 个答案:

答案 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以外的任何值都可以解决问题。