Pergunta

Eu conheço o de Python list método que pode consumir todos os elementos de um gerador. Existe algo assim disponível em Ruby?

Eu sei de :

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

Eu também sei do inject alternativo. Existe algum método pronto disponível?

Foi útil?

Solução

Enumerable#to_a

Outras dicas

Se você quiser fazer alguma transformação em todos os elementos do seu método enumerável, o método #Collect (também conhecido como #Map) seria útil:

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

Neste exemplo, elements conterá todos os elementos que estão em enumerable, mas com cada um deles traduzido para uma corda. Por exemplo

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

Nesse caso, elements seria ['1', '2', '3'].

Aqui está alguma saída do IRB ilustrando a diferença entre each e 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"]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top