7

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

我知道 :

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

我也知道inject替代方案。有现成可用的方法吗?

4

2 回答 2

15

Enumerable#to_a

于 2009-09-08T18:51:28.800 回答
3

如果你想对枚举中的所有元素进行一些转换,#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']

each以下是 irb 的一些输出,说明了和之间的区别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"]
于 2009-09-09T15:42:50.693 回答