繁体   English   中英

在clojure中只获得'doseq'的第一场比赛

[英]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的范围内,所以它是48 ,但是如果我只想要第一个匹配是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM