Provisoriamente tengo hecho el programa con una Lista lo cuál debo
suplantar por un "HashMap" (vengo de Java) ...  no conozco nada de lo
que ya tiene Ruby y empezar a mirar Modulo por Modulo o Clase por
Clase debe ser un trabajo muy lindo :P  ...al hacerlo con Lista lo que
hice fue incluir  la lista en una clase Sistema y ahi hacer los
metodos que tendra programada la lista...les dejo la clase,
seguramente muchos se rian porq programe los metodos bien caceros y
buscar si una lista esta vacia en Ruby (q esta todo ya hecho) debe ser
lista.empty?   o algo asi...pero como no se por donde empezar a
buscar, me hice los metodos re caceros jeje aqui les dejo la clase
Sistema asi se rien un poco ¬¬

Sistema
*********

class Sistema


  def getLista
    return @lista
  end

  def agregarEnLista(elemento)
    @lista << elemento
  end

  def agregarEnListaDupes(elemento)
    @listaDupes << elemento
  end

  def estaEnLista(elemento)
    ([EMAIL PROTECTED]).each do |i|
      if @lista[i] == elemento
        puts "ENCONTRE UN DUPPE!!"
        self.agregarEnListaDupes(elemento)
        return true
      end
    end
    return false
  end

  def getListaDupes
    return @listaDupes
  end

  def esVaciaLista
    if @lista.length == 0
      return true
    end
    return false
  end

  def mostrarLista
    for i in ([EMAIL PROTECTED])
      puts "Agregados a la lista: [EMAIL PROTECTED]"
    end
  end

  def initialize
    @lista           = Array.new
    @listaDupes = Array.new
  end
end


Necesito Utilizar HashMap en lugar de Lista para almacenar algo asi:

-----KEY-----     ---------- VALUE ------------
[d3daa1fc...  , /home/martin/archivo.txt]

El tema es que mire en internet y hay poca documentación...vi que se
creaba de la siguiente manera:

hash = {} #creo el hash
hash [md5] = "archivo1.txt" # ingreso elementos y clave al hash

como recorro el hashmap ?
como veo las operaciones que puedo realizarle a un HashMap..?? Ej..ver
si esta vacio sin hacer mi propio metodo :P

Estaba acostumbrado a q en Java HashMap es una clase...voy al API y
veo que metodos tiene programados y listo..aca no se ni por donde
empezar, estoy medio perdido aún...debe ser porque hace 3 días empezé
a leer de Ruby :P

Un tiempo estuve tratando de hacer cosas con RoR en lugar de PHP pero
estuve muy poco tiempo ya que no entendia mucho y queria programar en
RoR sin saber Ruby =P   ...ahora que ando con tiempo estoy lanzandome
a aprender Ruby!!


Gracias por la ayuda ;)


On 8/31/07, NachoKB <[EMAIL PROTECTED]> wrote:
> Está claro. Lo dije por que era muuuuuuuuuy simple (igual me gustó el
> ejercicio).
> Aunque más de una vez me pasó querer resolver algo y no encontrar cómo (o
> sea, yo sabía la mejor forma pero no encontraba el nombre del método)...
> recientemente, tenía un array de elementos (gnomos, digamos). Me interesaba
> separar el gnomo emperador del resto para que una view los muestre por
> separado. Yo buscaba una clasificación de elementos o algo así. Terminé
> haciendo algo como
>   emperador = gnomos.detect &:emperador?
>   [ emperador, gnomos - emperador ]
> Ayer me crucé con el método
> Enumerable.partition*..........................................................
>
> * notar que no es exactamente lo mismo, pero eso era lo que buscaba en un
> ppio... Ver
> http://corelib.rubyonrails.org/classes/Enumerable.html#M002183
>
> nachokb
>
>
> On 8/31/07, Emmanuel Oga < [EMAIL PROTECTED]> wrote:
> >
> > Deprimido? porque? Teniendo en cuenta el contexto asumo que es por no
> conocer el uso recursivo del metodo glob de la clas Dir de la libreria core
> de ruby... no? :)
> >
> > Bueno! creo que no tendrias que preocuparte mucho, si tenes en cuenta que
> la libreria core y la libreria estandar de ruby comprenden decenas de
> clases, cada una con decenas de metodos, dificilmente podrias conocer y
> recordar de memoria el comportamiento exacto de cada uno de esos metodos.
> Para mi la clave esta en compartir la info: lo que no se yo, alguien mas lo
> sabra!!!
> >
> > :)
> >
> >
> > NachoKB <[EMAIL PROTECTED]> escribió:
> > Gracias!!
> > Igual sigo deprimido...
> >
> >
> > On 8/31/07, Emmanuel Oga <[EMAIL PROTECTED]> wrote:
> > > Nacho:
> > >
> > > Dir.[] o Dir.glob toman como parametro un "glob pattern" (
> http://en.wikipedia.org/wiki/Glob_pattern ) que es un
> patron similar a una expresion regular pero menos poderoso que generalmente
> se usa para describir archivos.
> > >
> > > El glob Dir[/directorio/**/*'] recorre todos los archivos en el
> directorio "directorio" __Y__ sus subdirectorios, por lo que no hace falta
> que lo implementes por tu cuenta. Otra cosa buena es que a Dir.[] le podes
> pasar mas de un glob pattern si queres, ejemplo:
> > >
> > > Dir.glob ["/tmp/**/*", "/etc/**/*"].each do |file|
> > > ...
> > > end
> > >
> > > que busca todos los archivos en /tmp y sus subdirectorios __y__ todos
> los archivos /etc y susu subdirectorios.
> > >
> > > NachoKB <[EMAIL PROTECTED]> escribió:
> > >
> > > Cuidado que Find no es una clase, sino un módulo.
> > >
> > > O sea, no es para usarlo directamente... normalmente es para
> incorporarlo en una clase (para componer comportamiento). Lo mismo con
> FileTest.
> > >
> > > Me parece que lo que querés hacer lo podés hacer sólo usando File y
> Dir...
> > >
> > > Básicamente, vos querés agarrar todos los archivos a partir de un root
> dado (recursivamente) y calcularle el MD5:
> > >
> > >
> > > > Dir.new(directorio).map do |fullpath|
> > > >   [name, Digest::MD5.hexdigest (File.read(fullpath))]
> > > > end
> > > >
> > >
> > > El problema es que (1) si bien Dir es Enumerable, enumera sólo los hijos
> directo (no rescursivamente) y (2) "fullpath" no quedaría realmente el path
> completo... Por lo tanto hice esto, ver qué opinan:
> > >
> > >
> > > > class TraversableDir
> > > >   include Enumerable
> > > >   def initialize(*args, &block)
> > > >     @dir = Dir.new *args, &block
> > > >   end
> > > >   def each(&block)
> > > >     @dir.each do |name|
> > > >       unless ['.', '..'].include? name
> > > >         fullpath = self.fullpath(name)
> > > >         case
> > > >           when File.directory?(fullpath)
> > > >             TraversableDir.new(fullpath).each &block
> > > >           when File.file?(fullpath)
> > > >             block.call fullpath
> > > >           else
> > > >             p "Ojo ni dir ni file: #{fullpath} (hay que hacer algo?)"
> > > >         end
> > > >       end
> > > >     end
> > > >   end
> > > >   def fullpath(name)
> > > >     File.expand_path "[EMAIL PROTECTED]/#{name}"
> > > >   end
> > > > end
> > > >
> > >
> > > Entonces queda:
> > >
> > > > TraversableDir.new(directorio).map do |fullpath|
> > > >   [name, Digest:: MD5.hexdigest (File.read(fullpath))]
> > > > end
> > > >
> > >
> > > Lo que te daria un array de esta forma:
> > >
> > > > [
> > > >   [ "/path/a1", "ABDCE" ],
> > > >   [ "/path/a2", "DEADBEEF" ]
> > > > ]
> > > >
> > >
> > > Que es un idiom usado en Ruby (es similar a un Hash pero a veces se usa
> así, por ejemplo cuando no necesitás acceder a un elemento, sino que lo vas
> a iterar).
> > >
> > >
> > > On 8/31/07, Damian Janowski <[EMAIL PROTECTED] > wrote:
> > > > On 8/31/07, Martin Sagastume < [EMAIL PROTECTED]> wrote:
> > > > > Excelente, eso era lo que necesitaba...muchas gracias!!
> > > > >
> > > > > Estuve mirando si el "API" de Rails...creo que no vi eso :P  ..una
> > > > > cosa que me llamó la atención es que la clase Find tenga programado
> el
> > > > > método find  ...como que es medio desprolijo el hecho de tener un
> > > > > metodo que se llame igual que la clase (ya que en ruby no es el
> > > > > constructor)  Buscar.buscar  en lugar de Buscador.buscar o algo asi
> > > > > ...  es por algo en especial ?
> > > >
> > > > Nu sé :)
> > > >
> > > > Pero me parece que suele pasar con esas pequeñas funcionalidades que
> > > > son casi "helper" y muchas veces quedan como métodos de clase, etc.
> > > >
> > > > Por ejemplo: Iconv.iconv
> > > >
> > > > Saludos!
> > > > _______________________________________________
> > > > 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
> > >
> > >
> > >
> > > ________________________________
>
> > > ¡Sé un mejor fotógrafo!
> > > Perfeccioná tu técnica y encontrá las mejores fotos.
> > > Visitá http://ar.yahoo.com/promos/mejorfotografo.html
> > >
> > > _______________________________________________
> > > 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
> >
> >
> >
> > ________________________________
>
> > ¡Sé un mejor fotógrafo!
> > Perfeccioná tu técnica y encontrá las mejores fotos.
> > Visitá http://ar.yahoo.com/promos/mejorfotografo.html
> >
> >
> > _______________________________________________
> > 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
>
>


-- 
Martín Sagastume
094-575846
Montevideo - Uruguay
http://musicapastillera.blogspot.com
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a