Test whether a list contains a specific value in Clojure

后端 未结 18 2243
自闭症患者
自闭症患者 2020-11-30 17:17

What is the best way to test whether a list contains a given value in Clojure?

In particular, the behaviour of contains? is currently confusing me:

18条回答
  •  情深已故
    2020-11-30 17:51

    It is as simple as using a set - similar to maps, you can just drop it in the function position. It evaluates to the value if in the set (which is truthy) or nil (which is falsey):

    (#{100 101 102} 101) ; 101
    (#{100 101 102} 99) ; nil
    

    If you're checking against a reasonably sized vector/list you won't have until runtime, you can also use the set function:

    ; (def nums '(100 101 102))
    ((set nums) 101) ; 101
    

提交回复
热议问题