2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请在 关于 页面上查看更多关于如何使用本站的信息。

+3
转换器

讨论: 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

  • 包括 take-until 的转换器参数个数
  • 包括在转换器生成测试中的包含

21 答案

0

评论者:alexmiller

欢迎补丁(附带测试)。

0

评论者:ataggart

实现和测试 for take-until 和 drop-until,每个都有一个补丁。

0

评论者:wagjo

请将 :added 元数据更改为 "1.7"。

0

评论者:ataggart

更新到:添加 "1.7"

0

评论者:jbm

我想提议使用“{{take-through}}”和“{{drop-through}}”作为替代名称。我认为“through”更能清楚地表达与“{{take-while}}”和“{{drop-while}}”的区别。

0

评论者:jafingerhut

由于今天早些时候提交的一些更改,两个补丁 CLJ-1451-drop-until.patch 和 CLJ-1451-take-until.patch(日期为 2014 年 6 月 20 日)已不再与最新的 Clojure 主分支干净地应用。我尚未检查它们是否易于更新,但猜测它们可能只需要更新一些 diff 的上下文。

有关如何更新补丁的建议,请参阅http://dev.clojure.org/display/community/Developing Patches部分。

0

评论者:gshayban

最好也涵盖 transducer 的情况。

0

评论者:michaelblume

重新生成补丁

0

评论者:michaelblume

涵盖了 transducer 的情况 =)

0

评论者:michaelblume

实际上,我也喜欢 take/drop-through这个名字

0

评论者:gshayban

Michael,在转换器中不需要volatile/state,例如take-while。只需将其封装在'reduced to terminate

0

评论者:michaelblume

a) 你关于 take-until 的说法是明显正确的

b) 很抱歉,我不清楚我当时的take-until实现在想什么,我只能说是因为睡眠不足。

c) 我对如何在没有volatile的情况下让drop-until工作感到困惑

0

评论者:michaelblume

Ghadi和我讨论了这个问题,想不出drop-until的用例。有吗?

这里有一个新的take-until补丁,包括生成测试。

开放性问题

take-until是一个好的名字吗?我最关心的是,take-until这个名字听起来像是对take的轻微修改,但这个函数相对于take颠倒了谓词的意义。

0

评论者:jafingerhut

Michael,虽然JIRA可以处理同一张票上的多个同名附件,但试图确定哪个同名附件是有意义的可能会让人困惑。你能删除或重命名你的一个相同名称的附件吗?关于删除补丁的说明,请参阅这个维基页面上的"移除补丁"部分:[未提供链接功能链接](http://dev.clojure.org/display/community/Developing+Patches)

0

评论者:alexmiller

该补丁有点过时,所以我将其更新以应用于master,但它几乎是相同的。保留了归属。

已标记为预筛选。

...