Kev*_*bie 0 ruby arrays constructor ruby-block
我无法理解花括号内的部分.
Array.new(10) { |e| e = e * 2 }
# => [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Run Code Online (Sandbox Code Playgroud)
我知道创建了一个包含十个值的新数组,但下半部分是做什么的?
让我们详细介绍一下:
nums = Array.new(10)
Run Code Online (Sandbox Code Playgroud)
这将创建一个包含10个元素的新数组.对于每个数组元素,它将控制权传递给由以下指定的块:
{ |e| e = e * 2 }
Run Code Online (Sandbox Code Playgroud)
该|e|
代表元素的索引.索引是数组中的位置.这从0开始,到9结束,因为数组有10个元素.第二部分将索引乘以2并返回该值.这是因为e * 2
,作为块中的最后一个语句,返回.然后将返回的值应用于该元素的值.所以我们最终得到以下数组:
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Run Code Online (Sandbox Code Playgroud)
编辑
正如pjs所提到的那样,为了避免出现问题,编写相同代码的更简单方法是:
Array.new(10) { |e| e * 2 }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
115 次 |
最近记录: |