bidimensionales arreglos array ruby arrays enumerable

ruby - arreglos - Aplicar el método a cada elemento en matriz/enumerable



array ruby (4)

¡Puedes usar map o map! respectivamente, el primero devolverá una nueva lista, el segundo modificará la lista in situ:

>> array = [:one,:two,:three] => [:one, :two, :three] >> array.map{ |x| x.to_s } => ["one", "two", "three"]

Esta es mi matriz:

array = [:one,:two,:three]

Quiero aplicar el método to_s a todos mis elementos de matriz para obtener array = [''one'',''two'',''three''] .

¿Cómo puedo hacer esto (convertir cada elemento del enumerable en algo más)?


Esto funcionará:

array.map!(&:to_s)


Vale la pena señalar que si tiene una matriz de objetos que desea pasar de forma individual en un método con una persona que llama diferente, haga lo siguiente:

# erb <% strings = %w{ cat dog mouse rabbit } %> <% strings.each do |string| %> <%= t string %> <% end %>

Puede usar el method método combinado con el comportamiento de expansión del bloque para simplificar:

<%= strings.map(&method(:t)).join('' '') %>

Si no está familiarizado, lo method hace el method es encapsular el método asociado con el símbolo que se le pasa en un Proc y lo devuelve. El ampersand expande este Proc en un bloque, que se pasa al map bastante bien. El retorno del map es una matriz, y es probable que deseamos formatearlo un poco más, de ahí la join .

La advertencia es que, al igual que con Symbol#to_proc , no se pueden pasar argumentos al método helper.


  • array.map!(&:to_s) modifica la matriz original a [''one'',''two'',''three'']
  • array.map(&:to_s) devuelve la matriz [''one'',''two'',''three''] .