欢迎!请参阅关于页面以获取更多有关该功能的详细信息。
讨论: 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,传感器中不需要volatile或state,例如take-while。只需用'减少以终止'进行包裹。
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,但它几乎相同。保留归属权。
标记为预审。