2010-10-01 14 views
5

¿Cómo podría hacer este corto y extensible:¿Cómo SECAR en Ruby?

 
    def overview 
    puts "All As:" 
    for f in @a 
     puts f 
    end 
    puts "\n" 

    puts "All Bs:" 
    for f in @b 
     puts f 
    end 
    end 
+2

No utilice 'for'. – Reactormonk

Respuesta

8
for f in @a 
    puts f 
end 

podemos escrita

puts @a.join("\n") 

En el caso general, cuando se desea hacer algo con varias matrices, puede poner las matrices en una matriz y luego usar each p. Ej.

[@a, @b].each do |list| 
    list.each { |value| puts value } 
end 

y una vez que llegue a hacer algo más complicado que simplemente imprimir los valores que tiene sentido utilizar el método de extracto de refactorización en la operación que se está realizando, por ejemplo,

[@a, @b].each do |list| 
    do_something_with list 
end 

Por último, si usted necesita para mantener las etiquetas descriptivas ("Todo Como", etc.), puede utilizar un hash:

{'As' => @a, 'Bs' => @b}.each_pair do |label, values| 
    puts "All #{label}" 
    puts values.join("\n") 
end 
+0

Pero usa más memoria. – Hongli

+0

¿hay alguna forma de tener impresa al menos una pequeña etiqueta/etiqueta para @a y @b? pregunta respondida en tu segunda parte! ¡Gracias! – poseid

+0

El comentario de Hongli fue publicado antes de expandir la respuesta con múltiples sugerencias. Para mayor claridad, se refiere al uso de 'join' que construirá una nueva cadena que contiene todos los valores. – mikej

0

adivine ...

def overview 
    puts "All As:" 
    puts_a(@a) 
    puts "\n" 

    puts "All Bs:" 
    puts_a(@b) 
end 

def puts_a(strs) 
    for str in strs 
    puts str 
    end 
end 
1

me gustaría hacer algo así:

def overview 
    [@a, @b].each do |e| 
     puts e.join("\n") 
    end 
end 
4
def print_all(header, ary) 
    puts header 
    for f in ary 
    puts f 
    end 
end 

def overview 
    print_all("All As:", @a) 
    puts 
    print_all("All Bs:", @b) 
end 
+1

'for f in ary; pone f; fin 'es innecesario. Solo 'puts ary' hará el trabajo. – steenslag

Cuestiones relacionadas