一次循环一个数组的两个元素

时间:2015-06-24 12:40:29

标签: arrays ruby

鉴于此数组:

NUMERIC_FIELDS = [:a_single, :a_aggregate,
                  :field_single, :field_aggregate,
                  :line_manager_single, :line_manager_aggregate,
                  :off_single, :off_aggregate,
                  :regional_single, :regional_aggregate]

如何循环并将其中的两个元素一次传递给一个方法?我应首先通过a_singlea_aggregate,然后通过field_singlefield_aggregate。该方法只需要循环五次,因为有五对项目。

NUMERIC_FIELDS.each do |column_name|
  are_numeric_fields_valid(column_name)
end

3 个答案:

答案 0 :(得分:3)

首先,这不是哈希,它是一个符号数组。

要获得所需内容,您应该使用Enumerable#each_slice方法

NUMERIC_FIELDS.each_slice(2) do |pair|
  are_numeric_fields_valid(pair[0], pair[1])
end

答案 1 :(得分:2)

使用Enumerate#each_slice

NUMERIC_FIELDS.each_slice(2) do |column_name|
  are_numeric_fields_valid(*column_name)
end

splat运算符*将传递两个参数而不是一个Array,即are_numeric_fields_valid(:a_single, :a_aggregate)而不是are_numeric_fields_valid([:a_single, :a_aggregate])

答案 2 :(得分:0)

NUMERIC_FIELDS.each_slice(2) do |column_name|
 # and you can grab each symbol like: column_name[0] and column_name[1]
end