欢迎!请在关于页面了解更多关于此功能的信息。
讨论: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"。
已更新到 :added "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。我没有检查它们是否容易更新,但猜测它们只需更新diff上下文中的几行。
有关如何更新补丁的建议,请参阅http://dev.clojure.org/display/community/Developing Patches部分的“更新过时的补丁”。
评论者:gshayban
最好也包含transducer的情况。
评论者:michaelblume
已重置补丁
已覆盖transducer情况 =)
实际上我也喜欢 take/drop-through
Michael,在transducer中不需要volatile/state,就像take-while一样。只需将其包装在'reduced to terminate中即可终止
a) 在 take-until 方面,你显然是对的
b) 对于我的 take-until 实现,我完全不记得自己当时是怎么想的,我将归咎于缺乏睡眠。
c) 我对如何在没有 volatility 的情况下使 drop-until 生效感到困惑
我和 Ghadi 讨论了这个问题,但我们想不出 drop-until 的用例。有没有什么想法?
这是一个新的 take-until 补丁,包括生成式测试。
开放性问题
take-until 这个名字好吗?我最担心的是,take-until 让人听起来像是 take 的轻微修改,但这个函数相对于 take 反转了谓词的方向。
Michael,虽然 JIRA 可以处理具有相同名称的同一票据的多个附件,但对于试图确定哪个同名的附件是正确的用户来说可能会令人困惑。您能否移除或重命名其中一个相同名称的附件?有关删除补丁的说明请参阅本页面的“删除补丁”部分:http://dev.clojure.org/display/community/Developing Patches
由于补丁略过时,所以已更新以应用到 master 上,但它几乎相同。保留归属。
标记为预筛选。