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

Responder a