我知道Python的list
方法可以使用生成器中的所有元素。 Ruby中有类似的东西吗?
我知道:
elements = []
enumerable.each {|i| elements << i}
我也知道inject
替代方案。有一些现成的方法吗?
答案 0 :(得分:10)
Enumerable#to_a
答案 1 :(得分:3)
如果你想对你的枚举中的所有元素进行一些转换,那么#collect(a.k.a。#map)方法会有所帮助:
elements = enumerable.collect { |item| item.to_s }
在此示例中,elements
将包含enumerable
中的所有元素,但每个元素都转换为字符串。 E.g。
enumerable = [1, 2, 3]
elements = enumerable.collect { |number| number.to_s }
在这种情况下,elements
将是['1', '2', '3']
。
以下是irb的一些输出,说明了each
和collect
之间的区别:
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"]