Como posso obter uma lista de um rubi enumerável?
-
22-09-2019 - |
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?
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