Clojure Falsy使用contains返回值?功能
我不确定我在这里做错了什么:Clojure Falsy使用contains返回值?功能,clojure,Clojure,我不确定我在这里做错了什么: (defstruct prefix :a :b :c :d :e) (def peN (struct prefix "pen" "pe" "pem" "peng" "peny")) (contains? peN "pen") ;=> false 我希望它会回到现实。也许我没有使用contains?正确吗 检查键,而不是值。这是确定地图是否包含该值的一种方法: (some #(= "pen" %)(vals peN)) 检查键,而不是值。这是确定地图是
(defstruct prefix :a :b :c :d :e)
(def peN (struct prefix "pen" "pe" "pem" "peng" "peny"))
(contains? peN "pen") ;=> false
我希望它会回到现实。也许我没有使用contains?正确吗 检查键,而不是值。这是确定地图是否包含该值的一种方法:
(some #(= "pen" %)(vals peN))
检查键,而不是值。这是确定地图是否包含该值的一种方法:
(some #(= "pen" %)(vals peN))
一是,;您应改为使用:
现在,为什么对的调用包含?
返回false
?好的,记录基本上只是带有一点额外功能的映射(这在本例中是无关的),因此这相当于
(def pen {:a "pen" :b "pe" :c "pem" :d "peng" :e "peny"})
(contains? pen "pen") ;=> false
现在,如果我们查看的文档字符串,我们可以找到我们的答案:
如果给定集合中存在键,则返回true,否则返回false
在本例中,我们集合中的密钥集是
(keys pen) ;=> (:a :b :c :d :e)
我们真正想要的是查看笔中的值集是否包含笔,如下所示:
(contains? (set (vals pen)) "pen") ;=> true
但这就引出了一个问题:你为什么不先做一组笔呢
(def pen #{"pen" "pe" "pem" "peng" "peny"})
(contains? pen "pen") ;=> true
一是,;您应改为使用:
现在,为什么对的调用包含?
返回false
?好的,记录基本上只是带有一点额外功能的映射(这在本例中是无关的),因此这相当于
(def pen {:a "pen" :b "pe" :c "pem" :d "peng" :e "peny"})
(contains? pen "pen") ;=> false
现在,如果我们查看的文档字符串,我们可以找到我们的答案:
如果给定集合中存在键,则返回true,否则返回false
在本例中,我们集合中的密钥集是
(keys pen) ;=> (:a :b :c :d :e)
我们真正想要的是查看笔中的值集是否包含笔,如下所示:
(contains? (set (vals pen)) "pen") ;=> true
但这就引出了一个问题:你为什么不先做一组笔呢
(def pen #{"pen" "pe" "pem" "peng" "peny"})
(contains? pen "pen") ;=> true
我将使用什么函数检查值?我将使用什么函数检查值?我有几种不同类型的前缀。“布景更有意义吗?”MahmudAdam,我不太明白。你能解释一下“我有几种不同类型的前缀”是什么意思吗?我创建了一个名为prefix的通用映射,因为我有多种前缀可以使用。我使用的语言有五种形式的钢笔前缀和五种不同形式的男士前缀。因此,我认为为前缀创建一个通用的映射结构是一个不错的选择,这样我就可以基于相同的前缀结构创建不同的映射;至少,我可能会在记录上使用地图。由于您的键只是:a
,:b
,:c
,等等,所以我认为它们并不重要。我有几种不同的前缀。“布景更有意义吗?”MahmudAdam,我不太明白。你能解释一下“我有几种不同类型的前缀”是什么意思吗?我创建了一个名为prefix的通用映射,因为我有多种前缀可以使用。我使用的语言有五种形式的钢笔前缀和五种不同形式的男士前缀。因此,我认为为前缀创建一个通用的映射结构是一个不错的选择,这样我就可以基于相同的前缀结构创建不同的映射;至少,我可能会在记录上使用地图。由于您的键只是:a
,:b
,:c
,等等,所以我认为它们并不重要。