欢迎!有关本网站的工作方式,请参阅关于 页面获取更多信息。
讨论: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) 我不清楚如何在没有 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,但它几乎是相同的。保留了归属权。
标记为预筛查。