[英]getting only the first match from a 'doseq' in clojure
假设我想通过一系列数字或在一个范围内找到条件的第一个匹配:
(doseq [x (range 3 12)
:when (= 0 (mod x 4))
]
(println x)
)
代码将打印all
可分割的数字,在3到11的范围内,所以它是4
和8
,但是如果我只想要第一个匹配是4
怎么办?
doseq总是返回nil没有你可以从doseq获得的“第一场比赛”。
你可以做的是从你的(range 3 12)
过滤所有满足(= 0 (mod x 4))
的那些,并最终获取第一个,如下所示:
(->>
(range 3 12)
(filter #(= 0 (mod % 4)))
first)
; => 4
; this is eqivalent to the above it you are unfamiliar with `->>
; (first (filter #(= 0 (mod % 4)) (range 3 12)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.