[英]clojure loop/recur in a range
我想在3到11的范圍內loop/recur
:
(loop [itr 3]
(if (and (< itr 11) (= 0 (mod itr 4)))
(println itr)
(recur (inc itr))
))
如預期的那樣,它將返回4
。 問題是當我正在尋找不匹配的東西時:
(loop [itr 2]
(if (and (< itr 3) (= 0 (mod itr 4)))
(println itr)
(recur (inc itr))
))
這將使REPL崩潰而不返回nil
。 有沒有辦法在此循環中添加諸如else
語句之類的else
,因此,如果沒有匹配項,則返回nil
?
可以考慮使用更高級別的函數來代替loop
/ recur
:
(first (filter #(zero? (mod % 4)) (range 3 11)))
;=> 4
(first (filter #(zero? (mod % 4)) (range 2 3)))
;=> nil
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.