2008/12/6 Lucas Sallovitz <[EMAIL PROTECTED]>:
> On Sat, Dec 6, 2008 at 4:14 PM, Nelson Fernandez <[EMAIL PROTECTED]> wrote:
>> Lo que esta sucediento es que estás manjando el Hash como si fuera un
>> Array multidimencional
>>
>> a = Hash.new('hola')
>> puts a[1] => 'hola'
>> puts a[1][1] => 108
>>
>> 108 es el ascii de la letra o
>>
>
> Gracias Nelson, pero no estoy seguro que sea el caso, en tu ejemplo
> a[1] es un string, por lo tanto el operador [] devuelve el caracter
> que está en la posición que indica el índice, pero en el mío, h[1] es
> un hash, por lo que el operador [] debería devolver el valor apuntado
> por el objeto que paso como índice, que como no existe debería ser en
> este caso: {}.
>
> Te paso otro ejemplo que tal vez muestre mejor lo que quiero decir:
>
> h = Hash.new({})
> h['a']['b'] = 'c'
> p h['a']                     =>  {"b"=>"c"}
> p h['a']['b']                =>  "c"
> p h['no existe']         =>  {"b"=>"c"}
>
> Cuando según la definición de hash, el tercer caso debería devolver
> {}, o eso es lo que yo interpreto.
>

Aunque algo entiendo mal porque esto funciona como yo esperaría:

h = Hash.new({})
h['a'] = {"b"=>"c"}
p h['a']                     =>  {"b"=>"c"}
p h['a']['b']                =>  "c"
p h['no existe']         =>  {}

De todas formas me gustaría saber que hace el primer ejemplo.

Lucas.
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a