Ruby 重构问题

Ruby refactoring issue

假设我有一个 @array = [1 ,2 ,3] 我想为数组的每个数字创建三个块,其余部分如下所示:

@array.each do |first|
  (@array - [first]).each do |second|
    (@array - [first] - [second]) do |third|
      #do something

所以每个块都遍历整个数组,除了前一个块正在使用的元素。但这有点难闻和重复,因为对于每个块我都需要删除前面的元素,重构这些块的最佳方法是什么?

谢谢

术语是排列。 Ruby 有一个 built-in 方法可以做到这一点:

@array.permutation(3) do |first, second, third|
  # do something
end