为什么我可以将子数组传递给`Array#each`?

时间:2015-12-01 05:55:44

标签: ruby each

我知道div.col-xs-2{ padding:0px; } 将数组的每个元素传递给块。在下文中,数组的每个元素应为each[1,2],而不是[3,4]123

4

为什么以下工作?

arr = [[1,2], [3,4]]
arr.each {|item1, item2| puts " #{item1} #{item2} "}
#  1 2
#  3 4
# => [[1, 2], [3, 4]]

1 个答案:

答案 0 :(得分:3)

确实each传递给块的元素是[1, 2][3, 4],...而不是12,...当参数数量(块)变量赋值不匹配时,数据被破坏以试图使它们匹配。在您的情况下,您有相应的:

item1, item2 = [1, 2]

并且右侧的参数比左侧少。所以右边的数组被破坏为:

item1, item2 = 1, 2

您可以明确地将其写为:

{|(item1, item2)| ...}

但是这里的括号可以省略:

{|item1, item2| ...}