我一直在编写这段代码,如果它们是同一个项目,它会同意两个相同的数组:
items.each_with_index do | x, i |
items.each do | y, j |
if x.id != y.id
#... do some things
end
end
end
我真正想写的是:
items.compare_each do | x, y, i, j |
#... do some things
end
你会如何编写ruby / rails中的帮助程序?甚至它已经存在了吗?
答案 0 :(得分:1)
假设您正在尝试将单个数组中的每个元素与该数组中的每个其他元素进行比较,正如您的示例代码所示(而不是将两个数组相互比较,如文本所述),您希望{ {3}},如果索引很重要,可能与一起使用:
%i{a b c d e}.each_with_index.to_a.combination(2) {|(x,i),(y,j)| p [x,y,i,j] }
[:a, :b, 0, 1]
[:a, :c, 0, 2]
[:a, :d, 0, 3]
[:a, :e, 0, 4]
[:b, :c, 1, 2]
[:b, :d, 1, 3]
[:b, :e, 1, 4]
[:c, :d, 2, 3]
[:c, :e, 2, 4]
[:d, :e, 3, 4]
=> [[:a, 0], [:b, 1], [:c, 2], [:d, 3], [:e, 4]]
上面的例子也使用了Array#combination
。