¿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
¿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
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
Pero usa más memoria. – Hongli
¿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
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
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
me gustaría hacer algo así:
def overview
[@a, @b].each do |e|
puts e.join("\n")
end
end
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
'for f in ary; pone f; fin 'es innecesario. Solo 'puts ary' hará el trabajo. – steenslag
No utilice 'for'. – Reactormonk