鉴于此数组:
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_single
和a_aggregate
,然后通过field_single
和field_aggregate
。该方法只需要循环五次,因为有五对项目。
NUMERIC_FIELDS.each do |column_name|
are_numeric_fields_valid(column_name)
end
答案 0 :(得分:3)
首先,这不是哈希,它是一个符号数组。
要获得所需内容,您应该使用Enumerable#each_slice方法
NUMERIC_FIELDS.each_slice(2) do |pair|
are_numeric_fields_valid(pair[0], pair[1])
end
答案 1 :(得分:2)
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