Lo que encontraste se conoce normalmente como tal recursion, y en
realidad es el problema que estabas teniendo, cuando se ejecuta
'otra', sus variables no salen del scope porque las 'recursivas'
anteriores todavía no terminaron de ejecutarse, estrictamente
hablando, tu segunda solución tiene el mismo problema, pero
evidentemente ruby está optimizando la llamada recursiva cuando está
al final.

Pero en el primer ejemplo todas las llamadas a 'otra' ya terminaron, las que no 
terminaron fueron las llamadoras.

En fin, cierra lo que decís con el comportamiento de todas maneras.  Salvo que 
la segunda solución funciona porque creo que, al ejecutarse al final, después 
de la recursión, la llamadora también termina y ahí si libera, no sé si es 
optimización.

Espero que le sirva a alguien más que esté haciendo recursión, no parece muy 
intuitivo.  Me estaba matando el servidor y ahora ... ¡anda al pelo!  :)

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

Responder a