es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo imprimir algunos elementos de un arreglo en una nueva línea en Ruby?

Tengo un script de Ruby que imprime un array:

arr = ["nombre_archivo1", entero1, entero2, "nombre_archivo2", entero3, entero4, "nombre_archivo3", entero5, entero6 ...]

Lo que necesito es que este array sea más legible; me gustaría imprimir solo tres elementos en una sola línea, así:

"nombre_archivo1", entero1, entero2,
"nombre_archivo2", entero3, entero4,
"nombre_archivo3", entero5, entero6,

Logré llegar al punto de tener un array de arrays usando arr.each_slice(3).to_a:

arr = [["nombre_archivo1", entero1, entero2], ["nombre_archivo2", entero3, entero4], ["nombre_archivo3", entero5, entero6] ...]

pero todavía no logro hacer que cada array del array se imprima en una línea separada.

¿Hay alguna manera de hacer esto?

La salida ideal se vería algo como esto:

nombre_archivo1: entero1, entero2
nombre_archivo2: entero3, entero4
nombre_archivo3: entero5, entero6

pero entiendo que agregar el signo de dos puntos después de nombre_archivo es otro problema, probablemente tendría que jugar con join().

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de lograr esto. Puedes usar una combinación de los métodos each y join para imprimir cada arreglo en una línea separada con el formato deseado. Así es como puedes hacerlo:

    arr.each_slice(3) do |filename, int1, int2|
      puts "#{filename}: #{int1}, #{int2}"
    end
    

    Esto iterará a través de cada arreglo en el arreglo arr, y para cada arreglo asignará el primer elemento a filename, el segundo a int1 y el tercero a int2. Luego, imprimirá estas variables en el formato deseado usando interpolación de cadenas.

    Si quieres agregar dos puntos después de filename, simplemente puedes modificar la interpolación de cadenas de esta manera:

    puts "#{filename}: #{int1}, #{int2}"
    

    ¡Espero que esto te ayude! Avísame si tienes alguna otra pregunta.

Comments are closed.