欢迎!请参阅关于页面了解更多关于此功能的信息。
讨论:https://groups.google.com/d/topic/clojure-dev/NaAuBz6SpkY/discussion
当我会使用 (take-while pred coll) 但需要包括第一个 (pred item) 为假的项目时会出现。
(take-while pos? [1 2 0 3]) => (1 2) (take-until zero? [1 2 0 3]) => (1 2 0)
补丁: clj-1451.patch
评论由:gshayban 撰写
我觉得这已被 CLJ-1906 取代
而且这肯定被 halt-when 取代了
halt-when
评论由:alexmiller 撰写
它不是惰性的,但这是使用 halt-when 编写 take-until 的一个方法
(defn take-until [p s] (transduce (halt-when p (fn [r h] (conj r h))) conj [] s))
评论由:[email protected] 提供
我想建议:(sequence (halt-when p conj) s),但 sequence 不支持在值减少时提前停止,所以这种方法不可行。
(sequence (halt-when p conj) s)
是的,halt-when 在除了 transduce 之外的 transducible 环境中使用比较棘手。