【问题标题】:How do I write Ruby's each_cons in Clojure?如何在 Clojure 中编写 Ruby 的 each_cons?
【发布时间】:2013-08-31 19:26:47
【问题描述】:

如何在 Clojure 中重写这段 Ruby 代码?

seq = [1, 2, 3, 4, 5].each_cons(2) 
#=> lazy Enumerable of pairs
seq.to_a
=> [[1, 2], [2, 3], [3, 4], [4, 5]]

Clojure:

(??? 2 [1 2 3 4 5])
;=> lazy seq of [1 2] [2 3] [3 4] [4 5]

【问题讨论】:

  • 顺便说一句,@fujy,当我在与此问题stackoverflow.com/questions/18072261/… 类似的情况下添加ruby 标签时,@sawa 将其删除。我倾向于同意他的观点。这不是关于 Ruby 的问题,而是关于 Clojure 的问题。
  • 是的,我同意你的观点,这不是关于 ruby 的问题。不过,我认为能回答的人应该明白ruby代码。

标签: ruby clojure


【解决方案1】:

您所要求的在惰性序列上称为sliding window。这样您就可以实现这一目标

user=> (partition 2 1 [1 2 3 4 5])
((1 2) (2 3) (3 4) (4 5))

【讨论】:

  • 我应该在阅读分区函数文档时多加注意。谢谢!
  • @DNNX 我也没有 :)
猜你喜欢
  • 2013-08-06
  • 1970-01-01
  • 2011-08-18
  • 2017-02-06
  • 1970-01-01
  • 2010-11-14
  • 2012-06-01
  • 1970-01-01
  • 2020-05-29
相关资源
最近更新 更多