Ok, voy a probar y luego comento.
Muchas gracias
----- Original Message -----
From: Emmanuel Oga
To: Grupo Ruby Argentina
Sent: Thursday, June 14, 2007 10:05 AM
Subject: Re: [Ruby Arg] Consulta sobre block y su secuencia de evaluacion
No lo he probado, pero investiga algo como esto:
registros= []
IO.foreach("nombre_archivo.txt") do |line| #Lee cada linea del archivo
registros << Estructura.new(linea[0..30].strip, *linea[31..-1].split) if
linea.size == 106
end
Los llamados "one liners" estan ok, pero no te olvides de que existen los
"procedimientos" (en el caso de ruby son métodos pertenecientes a un objeto
global generado con la clase "Object"). Creo que estructurandolo asi es mas
facil de entender lo que queres hacer:
registros= []
def procesar(linea)
# ... hace lo que quieras con la linea, ej:
registros << Estructura.new(linea[0..30].strip, *linea[31..-1].split)
end
IO.foreach("nombre_archivo.txt") do |line| #Lee cada linea del archivo
procesar(linea) if linea.size == 106
end
Emmanuel
Fernando Castañeda <[EMAIL PROTECTED]> escribió:
Una consulta de como implementar que la linea que voy evaluando al abrir el
archivo tenga una longitud de 106 caracteres o en su defecto que se salteé en
el procesamiento las 3 primeras lineas del archivo ya que las mismas
corresponden a encabezados que no son tenidos en cuenta.
No me funciona este bloque, ya que pasa y me da error al mapear con el
Struct cuando no tiene el contenido que espera.
Registros = File.open('c:/vts/txt/dos.txt').map {|linea| if
linea.length >= 106 then Estructura.new(linea[0..30].strip,
*linea[31..-1].split) end}
Muchas gracias nuevamente.
Fernando Castañeda.
www.inidep.edu.ar
Codigo que vengo testeando
class Movimiento
attr_writer :nombre , :matricula
attr_reader :nombre , :matricula
def initialize(nombre, matricula)
@nombre = nombre
@matricula = matricula
end
end
miarray=Array.new
Estructura = Struct.new(:barco, :matricula, :latitud, :ems, :a0, :a1, :a2,
:a3, :a4, :a5, :a6, :a7, :a8, :a9)
#Registros = File.open('c:/vts/txt/d.txt').map {|linea| puts linea.size}
Registros = File.open('c:/vts/txt/dos.txt').map {|linea| if linea.length =
106 then Estructura.new(linea[0..30].strip, *linea[31..-1].split) end}
Registros.each{|x| miarray << Movimiento.new(x.barco, x.matricula) }
miarray.each{|y| puts y.matricula+" "+y.nombre}
miarray.map {|item| puts item.matricula+" "+item.nombre }
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
------------------------------------------------------------------------------
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
------------------------------------------------------------------------------
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar