欢迎!请查阅关于页面获取更多关于如何使用的信息。
讨论: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
由:alexmiller 发表评论
补丁欢迎(含测试)。
由:ataggart 发表评论
为 take-until 和 drop-until 实现和测试,每个补丁一个。
由:wagjo 发表评论
请将 :added 元数据更改为 "1.7"。
更新为:添加了 "1.7" 版本
由 jbm 发表的评论:
我想提议将 {{take-through}} 和 {{drop-through}} 作为备选名称。我认为 "through" 能更清楚地表达它们与 {{take-while}} 和 {{drop-while}} 的区别。
由 jafingerhut 发表的评论:
由于今天早些时候提交了一些更改,因此2014年6月20日发布的两个补丁文件 CLJ-1451-drop-until.patch 和 CLJ-1451-take-until.patch 无法干净地应用于最新的 Clojure 主分支。我没有检查它们是否容易更新,但猜测可能只需要更新几个 diff 上下文行。
有关更新补丁的建议,请参阅 http://dev.clojure.org/display/community/Developing Patches 中的 "更新陈旧的补丁" 部分。
由 gshayban 发表的评论:
最好也涵盖 transducer 的情况。
由 michaelblume 发表的评论:
重新滚动补丁
涵盖了 transducer 的情况,=)
实际上我也喜欢 take/drop-through。
Michael,转换器中不需要矢量或不稳定/状态,例如 take-while。只需将其包装在 'reduced to terminate' 中。
a) 你关于 take-until 的说法是对的
b) 很抱歉,我不记得为什么我的 take-until 实现有误,我要声称是因为缺乏睡眠。
c) 我不清楚如何在没有矢量的情况下使 drop-until 工作起来。
Ghadi 和我讨论了这个问题,没有想到 drop-until 的用法案例。有吗?
这是一个新的 take-until 补丁,包括生成测试。
开放性问题
take-until 这个名字好吗?我最大的担忧是,take-until 让人听起来像是 take 的轻微修改,但这个函数与 take 相比,相反的医疗标准。
Michael,虽然 JIRA 可以处理具有相同名称的多张纸卡,但对于试图确定相同名称的是哪张的人来说可能会很困惑。您可以删除或重命名您的重复文件之一吗?有关删除补丁的说明请参阅本维基页面的“删除补丁”部分:[http://dev.clojure.org/display/community/Developing+Patches](http://dev.clojure.org/display/community/Developing+Patches)
由于补丁稍微有些过时,所以我对其进行了更新以应用 master,但它几乎相同。保留归属权。
标记为预筛。