如何在 Ruby 中单行初始化多个数组?

How to initialise multiple array in single line in Ruby?

我正在尝试进行一些计算并从那里获取组和部门数组。 但是如果我 return 像这样 [], [] 它给出错误,而如果我 return 它像 [[],[]] 它工作正常,但在后一种情况下,3 个数组将被初始化,这是我想避免的? 有没有更好的方法来使用 2 数组本身?

    def fetch_group_dept_values
      if condition
        [1,2,3,], [4,5]
      else  
        [9,15], [10,11]
      end
    end

    groups, departments = fetch_group_dept_values 

前面用return,

   def fetch_group_dept_values
      if condition
        return [1,2,3,], [4,5]
      else  
        return [9,15], [10,11]
      end
    end

    groups, departments = fetch_group_dept_values 

if I return it like [[],[]] it is working fine but in the later case, 3 arrays will get initialize which I want to avoid?

无法避免,因为一个方法只能return一个单个对象。

所以将对象包裹在 [...] 中就可以了:

def fetch_group_dept_values
  if condition
    [[1, 2, 3,], [4, 5]]
  else  
    [[9, 15], [10, 11]]
  end
end

创建(小)额外数组的开销可以忽略不计。

但是,您可以通过 生成 值而不是 returning 它们来避免外部数组:

def fetch_group_dept_values
  if condition
    yield [1, 2, 3,], [4, 5]
  else  
    yield [9, 15], [10, 11]
  end
end

并通过以下方式调用:

fetch_group_dept_values do |groups, departments|
  # ...
end