Forum: Rails-ES problema novato sobre hash ruby

Posted by Angel Marques (angel21os)
on 2010-01-30 05:52
hola a todos, tengo un problema resolviendo uno de los ruby quiz para
explicarme mejor voy a simplificar el problema

a={1 =>"uno",
   10=>"diez",
   100=>"cien"}


si tengo un valor=8 quiero que el script le indique que el valor esta
entre 1 y 10...en lo posible a traves de un iterador como each (el
problema original es un poco mas complicado)

seria algo asi

a.each_key do |key|
if valor>key && valor<(((aqui es donde no se que colocar))).

si coloco valor<key+1 o key.next lo que hace es sumarle uno ya que next
no es de la coleccion de hash...

lo que quisiera saber es si existe alguna funcion que me devuelva el
siguiente key o en un array el siguiente valor y asi evitar tener que
escribirla

algo como
a[1].key_next=10      o

si es un array   array=[1,10,100]
a.value(1).next

la pregunta es algo tonta pero es que soy nuevo en esto y  la verdad no
tengo idea
gracias!!
Posted by Cristian Vasquez (heavyblade)
on 2010-02-07 05:19
Angel Marques wrote:
> hola a todos, tengo un problema resolviendo uno de los ruby quiz para
> explicarme mejor voy a simplificar el problema
> 
> a={1 =>"uno",
>    10=>"diez",
>    100=>"cien"}
> 
> 
> si tengo un valor=8 quiero que el script le indique que el valor esta
> entre 1 y 10...en lo posible a traves de un iterador como each (el
> problema original es un poco mas complicado)
> 
> seria algo asi
> 
> a.each_key do |key|
> if valor>key && valor<(((aqui es donde no se que colocar))).
> 
> si coloco valor<key+1 o key.next lo que hace es sumarle uno ya que next
> no es de la coleccion de hash...
> 
> lo que quisiera saber es si existe alguna funcion que me devuelva el
> siguiente key o en un array el siguiente valor y asi evitar tener que
> escribirla
> 
> algo como
> a[1].key_next=10      o
> 
> si es un array   array=[1,10,100]
> a.value(1).next
> 
> la pregunta es algo tonta pero es que soy nuevo en esto y  la verdad no
> tengo idea
> gracias!!

Hola mira realmente no estas tan lejos de la solucion mira este codigo y 
te dara una clara idea =>

def buscar(parametro)
  a= {1..9 => "Uno", 10..99 => "Diez", 100..1000 => "Cien"}

  a.keys.each  do |e|
    if e.include?(parametro)
      puts a[e]
    end
  end
end
Saludos,

Cristian Vasquez
Medellín-Colombia
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.