我有一个案例,我需要检查列表中的所有字符串元素是否相等,并且我试图弄清楚最惯用的解决方案是什么样的。我当前的方法是,将class="l-row"
应用于列表,检查每个元素是否等于第一个,然后使用'='减少结果布尔列表:
map
显然,这不是一个很好的解决方案。是否有更多的“clojure风格”解决方案,甚至更简单的方法,我还没有看到?
答案 0 :(得分:14)
您可以使用以下内容:
(apply = string-list)
答案 1 :(得分:3)
正如@Symfrog所回答,使用apply
和=
看起来效果最佳。
(apply = string-list)
也许看起来可以使用distinct
函数或set
,但是,这些并不是一个好主意,因为这些不能用于无限序列,尽管正确的答案会很快回复
;; works for small sequence, however, will not work for infinite sequence like (range)
(= 1 (count (distinct string-list))) ; bad idea
(= 1 (count (into #{} string-list))) ; bad idea