如何從舊的序列得到一個新的序列中,新的元素是從舊的,直到一個條件滿足Clojure的順序操作
假設條件是#(>%0)
'(1 2 3 0 3 2 0 1)返回1,2,3
'(0 1 2 3)返回空SEQ
「(1 2 3)返回的一切。
注意它與過濾器不一樣。
如何從舊的序列得到一個新的序列中,新的元素是從舊的,直到一個條件滿足Clojure的順序操作
假設條件是#(>%0)
'(1 2 3 0 3 2 0 1)返回1,2,3
'(0 1 2 3)返回空SEQ
「(1 2 3)返回的一切。
注意它與過濾器不一樣。
你可能想使用take-while:
(take-while #(> % 0) '(1 2 3 0 3 2 0 1))
=> (1 2 3)
mikera的答案看起來不錯,但也考慮split-with
,如果你需要做的列表的其餘部分進一步處理。
=> (split-with #(> % 0) '(1 2 3 0 3 2 0 1))
[(1 2 3) (0 3 2 0 1)]
這是Clojure的喜悅:有這麼多的方法對皮膚一隻貓:
(for [i '(1 2 3 0 3 2 0 1) :while (> i 0)] i)
=> (1 2 3)
甚至'(取而POS「(1 2 3 0 3 2 0 1) )',在這個特定的情況下。 – sanityinc 2012-03-23 11:18:07