欢迎!请参阅关于页面以了解更多关于其工作方式的信息。
讨论: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"。
更新到:added "1.7"
评论者:jbm
我想提出将{{take-through}}和{{drop-through}}作为替代名称的建议。我认为“通过”这个词更清楚地表达了与{{take-while}}和{{drop-while}}的区别。
评论者:jafingerhut
由于今天早些时候的一些更改,两个补丁CLJ-1451-drop-until.patch和CLJ-1451-take-until.patch(均为2014年6月20日发布)不再能干净地应用于最新的Clojure master。我还没有检查它们是否容易更新,但猜测只需更新几行diff上下文。
有关更新补丁的建议,请参阅http://dev.clojure.org/display/community/Developing Patches部分的“更新过时补丁”。
评论者:gshayban
最好也涵盖transducer的情况。
评论者:michaelblume
重新滚动补丁
覆盖了transducer的情况 =)
实际上我也喜欢take/drop-through
Michael,与take-while类似,在transducer中不需要volatile/state。只需包裹以'reduced to terminate终结即可
a) 你对 take-until 的理解很清晰
b) 我对 take-until 的实现一塌糊涂,我要声称因为缺乏睡眠才犯了错误。
c) 我不清楚如何在没有volatile变量的情况下使drop-until工作。
Ghadi 和我讨论了这个问题,但我们想不出 drop-until 的用例。有吗?
这是一个新的 take-until 补丁,包括生成测试。
开放问题
take-until 这个名字好吗?我最担心的是 take-until 让人听起来像是 take 的微小修改,但这个函数与 take 相比改变了谓词的意义。
Michael,虽然 JIRA 可以处理同一个票据具有相同名称的多个附件,但对于试图确定哪个同名附件是需要的,会有些令人困惑。你能删除或重命名你的同名称附件之一吗?有关删除补丁的说明请参阅本wiki页面中的“删除补丁”部分:[http://dev.clojure.org/display/community/Developing+Patches](http://dev.clojure.org/display/community/Developing Patches)
由于补丁稍微有些过时,所以我更新了它可以应用在master上,但它几乎是一样的。保留了贡献者信息。
标记为预筛选。