如何以第一个计数器永远不等于第二个的方式在一个数组上执行嵌套循环

How to perform a nested loop on one array in such a way that the first counter is never equal to the second

如何像这样遍历同一个数组两次

array.each do |k|
 array.each do |l|
 end
end

这样 k 永远不会等于 l

我认为最好的方法是让它成为一个循环:

(array.product(array) - array.zip(array)).each do |(k, l)|
  ...
end

两种不太优雅的方法:

array.each do |k|
  (array - [k]).each do |l|
    ...
  end
end

array.each do |k|
  array.each do |l|
    next if k == l
    ...
  end
end

前提是数组的元素是唯一的:

array.permutation(2) do |k,l|
end