如何从Ruby可枚举中获取列表?

我知道Python的list方法可以使用生成器中的所有元素。 Ruby中有类似的东西吗?

我知道 :

 elements = [] enumerable.each {|i| elements << i} 

我也知道inject替代品。 有一些现成的方法吗?

Enumerable#to_a

如果你想对你的枚举中的所有元素进行一些转换,那么#collect(又名#map)方法会有所帮助:

 elements = enumerable.collect { |item| item.to_s } 

在此示例中, elements将包含enumerable所有元素,但每个元素都转换为字符串。 例如

 enumerable = [1, 2, 3] elements = enumerable.collect { |number| number.to_s } 

在这种情况下, elements将是['1', '2', '3']

以下是irb的一些输出,说明了eachcollect之间的区别:

 irb(main):001:0> enumerable = [1, 2, 3] => [1, 2, 3] irb(main):002:0> elements = enumerable.each { |number| number.to_s } => [1, 2, 3] irb(main):003:0> elements => [1, 2, 3] irb(main):004:0> elements = enumerable.collect { |number| number.to_s } => ["1", "2", "3"] irb(main):005:0> elements => ["1", "2", "3"]