欢迎!请在 关于 页面上查看更多关于如何使用本站的信息。
讨论: 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
实现和测试 for take-until 和 drop-until,每个都有一个补丁。
评论者:wagjo
请将 :added 元数据更改为 "1.7"。
更新到:添加 "1.7"
评论者:jbm
我想提议使用“{{take-through}}”和“{{drop-through}}”作为替代名称。我认为“through”更能清楚地表达与“{{take-while}}”和“{{drop-while}}”的区别。
评论者:jafingerhut
由于今天早些时候提交的一些更改,两个补丁 CLJ-1451-drop-until.patch 和 CLJ-1451-take-until.patch(日期为 2014 年 6 月 20 日)已不再与最新的 Clojure 主分支干净地应用。我尚未检查它们是否易于更新,但猜测它们可能只需要更新一些 diff 的上下文。
有关如何更新补丁的建议,请参阅http://dev.clojure.org/display/community/Developing Patches部分。
评论者:gshayban
最好也涵盖 transducer 的情况。
评论者:michaelblume
重新生成补丁
涵盖了 transducer 的情况 =)
实际上,我也喜欢 take/drop-through这个名字
Michael,在转换器中不需要volatile/state,例如take-while。只需将其封装在'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可以处理同一张票上的多个同名附件,但试图确定哪个同名附件是有意义的可能会让人困惑。你能删除或重命名你的一个相同名称的附件吗?关于删除补丁的说明,请参阅这个维基页面上的"移除补丁"部分:[未提供链接功能链接](http://dev.clojure.org/display/community/Developing+Patches)
该补丁有点过时,所以我将其更新以应用于master,但它几乎是相同的。保留了归属。
已标记为预筛选。