欢迎!请参阅关于页面,了解这个平台的工作方式。
讨论:https://groups.google.com/d/topic/clojure-dev/NaAuBz6SpkY/discussion
这种情况发生在原本会使用 (take-while pred coll),但需要包括使 (pred item) 为 false 的第一个项。
(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 master。我还没有检查它们是否可以直接更新,但猜测这只需要更新差分上下文的几行。
有关更新补丁的建议,请参阅 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 可以处理同名但具有多个附件的同一票,但人们要确定哪个同名附件是想要的可能会变得很混乱。你能否删除或重命名一个同名附件?有关删除补丁的说明请参阅此维客页面的 "Removing patches" 部分: http://dev.clojure.org/display/community/Developing Patches
补丁稍微有点过时,所以我将其更新为适用于 master,但几乎一模一样。归功保留。
标记为预审。