更新:抱歉,我修正了我的程序:
a = [ 'str1' , 'str2', 'str2', 'str3' ]
name = ''
a.each_with_index do |x, i |
if x == name
puts "#{x} found duplicate."
else
puts x
name = x if i!= 0
end
end
output:
str1
str2
str2 found duplicate.
str3
在 ruby
语言中是否有另一种漂亮的方式来做同样的事情?
顺便说一句,实际上。 a
在我的真实案例中是一个 ActiveRecord::Relation
。
谢谢。
最佳答案
each_cons
可能遇到的问题是它遍历 n-1
对(如果 Enumerable 的长度是 n
) .在某些情况下,这意味着您必须单独处理第一个(或最后一个)元素的边缘情况。
在那种情况下,实现 method 真的很容易类似于 each_cons
,但它会为第一个元素产生 (nil, elem0)
(与 each_cons
相对,后者产生 ( elem0, elem1)
:
module Enumerable
def each_with_previous
self.inject(nil){|prev, curr| yield prev, curr; curr}
self
end
end
关于ruby - 如何与 `each` 迭代器中的前一项进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9517153/