Каковы некоторые распространенные ошибки разработчиков Clojure и как их избежать?
Например; новички на Clojure считают, что функция contains?
работает так же, как java.util.Collection#contains
. Тем не менее, contains?
будет работать аналогичным образом при использовании с индексированными коллекциями, такими как карты и наборы, и вы ищете данный ключ:
(contains? {:a 1 :b 2} :b)
;=> true
(contains? {:a 1 :b 2} 2)
;=> false
(contains? #{:a 1 :b 2} :b)
;=> true
При использовании с численно индексированными коллекциями (векторы, массивы) contains?
только проверяет, что данный элемент находится в допустимом диапазоне индексов (на основе нуля):
(contains? [1 2 3 4] 4)
;=> false
(contains? [1 2 3 4] 0)
;=> true
Если задан список, contains?
никогда не вернет true.