欢迎!请查阅关于页面了解更多有关其工作原理的信息。
讨论: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 主分支上。我没有检查它们是否容易更新,但猜测只需要更新几行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](http://dev.clojure.org/display/community/Developing Patches)
该补丁略有陈旧,因此我更新到了 master,但它几乎相同。保持归属。
标为预审。