Muchas gracias Alejandro, clarisima la explicación.
Saludos,
Juan.
On 6/14/07, Alejandro Di Battista <[EMAIL PROTECTED]> wrote:
a "<<" se lo usa para agregar al final (de una array o un string por
ejemplo)
> a = [1, 2, 3]
>
equivale a
> a = Array.new
> a << 1
> a << 2
> a << 3
>
o mas compacto
a = [] << 1 << 2 << 3
>
El "*" delante de linea es un poco mas completo (pero hermoso) significa
expanda el array como una lista de parametros
Si tenes
> def sumar(a, b, c)
> a + b + c
> end
>
Podes hacer
> x = [1, 2, 3]
>
puts sumar( *x )
>
lo que equivale a
> puts sumar(1, 2, 3)
>
On 6/14/07, Juan Roperto <[EMAIL PROTECTED]> wrote:
>
> Antes que nada: Hola!!!
> Hace menos de un mes que me subscribí a la lista y me gusta mucho Ruby y
> Ruby on Rails.
> Tuve un par de clases en la facultad sobre Ruby y me gusto mucho el
> lenguaje desde el principio (vengo de Java).
> Viendo los códigos de Fernando y Emmanuel encontré cosas que no conozco
> o no comprendo. Precisamente lo siguiente:
>
> - registros << Estructura.*new*(linea[*0* ..*30*].strip, *linea[*
> 31*..-* 1 *].split) if linea.size == 106
> En la mayoría de los lenguajes el << se utiliza para "shifteo".
> ¿en Ruby también?¿Cómo funciona?
> ¿Para que sirve el * antes del arreglo?
>
> Muchas gracias de antemano por su respuesta y disculpen por el
> off-topic.
> Saludos,
> Juan.
>
>
> On 6/14/07, Emmanuel Oga <[EMAIL PROTECTED]> wrote:
> >
> > 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! <http://ar.answers.yahoo.com>*
> >
> >
> > _______________________________________________
> > 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
>
>
>
--
Agilsoft
(381) 431-4290 | Maipú 140 Of. 30
(4000) Tucumán | Argentina
_______________________________________________
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