Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

175
Views
Ruby cómo imprimir/coloca el contenido del archivo de lectura en lugar de un montón de números/símbolos

En ruby, he creado una clase y una matriz, para leer los contenidos de un archivo de texto y luego generarlos.

 class Album attr_accessor :artist, :title, :genre, :tracks end album = Album.new(album_title, album_artist, album_genre, tracks)

-> las pistas son una matriz de varias líneas que se leen del archivo de texto mediante un bucle while. Contexto a continuación, a_file/music_file File.new("album.txt", "r")

 class Track attr_accessor :name, :location def read_track(a_file) track_title = a_file.gets() track_location = a_file.gets() track = Track.new(track_title, track_location) end def read_tracks(music_file) tracks = Array.new() count = music_file.gets().to_i() track = music_file index = 0 while (index < count) track = read_track(music_file) tracks << track index += 1 end return tracks end end

after album = Album.new(album_title, album_artist, album_genre, tracks) , pasé el álbum a un procedimiento diferente print_tracks(album) , y en print_tracks(album) , puse puts album.tracks .

Pero en lugar de imprimir varias líneas de nombres de pistas y ubicaciones de pistas, obtengo algo parecido a esto:

 #<Track:0x000055c028027b08> #<Track:0x000055c0280277c0> #<Track:0x000055c028027630>

¿Cómo imprimo las palabras reales en el archivo?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Lo que obtiene a cambio son instancias de su clase Track. Cada una de esas instancias tiene acceso a atributos como nombre y ubicación como se especifica en la definición de clase en attr_accessor. Puede cambiar su última declaración ( return tracks ) (tenga en cuenta que no es necesario return aquí ya que es la última declaración en el método, lo último se devolverá de forma predeterminada en Ruby).

Prueba esto en lugar de return tracks

 tracks.map{ |track| {track_name: track.name, track_location: track.location} }

De esta manera, terminará con una matriz de hashes con claves de track_name y track_location, cada una de las cuales contiene un valor de una pista. No estoy seguro de qué tipo de formato desea devolver, pero este es bastante simple, pero flexible. La forma más simple sería matriz de matriz, que puede obtener usando:

 racks.map{ |track| [track.name, track.location] }
over 4 years ago · Santiago Trujillo Report

0

Está observando el comportamiento predeterminado definido en Object#to_s y Object#inspect .

Ruby usa el método to_s para convertir objetos en cadenas y el método inspect para obtener representaciones de cadenas de objetos adecuados para la depuración. Por defecto, to_s e inspect son más o menos lo mismo. La única diferencia es que la inspect también mostrará las variables de instancia.

Puede y debe anular estos métodos en su clase Track . Por ejemplo:

 class Track def to_s "#{self.class.name} #{name} @ {location}" end def inspect "#<#{to_s}>" end end track.to_s puts track # Track: name @ /music/name.flac track.inspect p track # #<Track: name @ /music/name.flac>
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!