只获得来自“剂量”的第一场比赛。在clojure

时间:2016-01-24 01:41:06

标签: loops clojure

假设我想通过一系列数字或在一个范围内找到条件的第一个匹配项:

(doseq [x (range 3 12)
        :when (= 0 (mod x 4))
        ]
  (println x)
  )

代码会打印all可分割的数字,范围为3到11,因此它会48,但如果我只想要第一场比赛4

1 个答案:

答案 0 :(得分:3)

doseq总是返回nil没有“你可以从doseq获得的第一场比赛”。

您可以做的是将(range 3 12)过滤掉所有满足(= 0 (mod x 4))的{​​{1}},然后最终获取第一个:

(->> 
  (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)))