使用块的Ruby数组初始化

时间:2016-04-02 23:12:53

标签: ruby

以下代码如何给出[0,2,4,6,8,10,12,14,16,18]的o / p

nums = Array.new(10) { |e| e = e * 2 }

puts "#{nums}"

2 个答案:

答案 0 :(得分:0)

我认为这里的想法是e表示作为"number"块中的参数传递的每个{},将其填充为数组中2的倍数,并且你最后通过传递一个参数来操纵它。在http://ruby-doc.org/core-2.2.1/Array.html

中查看更多详细信息
>> new_array = Array.new(10)
=> [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]

>> new_array = Array.new(10) { |e| e * 2 }
=> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

>> new_array = Array.new(10) { |e| e }
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

答案 1 :(得分:0)

索引值是通过管道进入块的内容。块的返回值将放入该索引处的数组中。