exención de responsabilidad: Código tomado de la ruby koansRuby: alcance explícita en una definición de clase
Se trata de una discusión de las constantes de alcance dentro de las clases. Aquí está el Defintion de un par de pocas clases:
class Animal
LEGS = 4
def legs_in_animal
LEGS
end
end
class MyAnimals
LEGS = 2
class Bird < Animal
def legs_in_bird
LEGS
end
end
end
En este punto haciendo MyAnimals::Bird.new.legs_in_bird
resultados en 2 y entiendo por qué - buscar espacio léxica para la constante antes de la jerarquía de herencia.
A continuación, se define esta clase:
class MyAnimals::Oyster < Animal
def legs_in_oyster
LEGS
end
end
El tutorial dice que ahora llamando MyAnimals::Oyster.new.legs_in_oyster
resultados en 4 y no puedo entenderlo. Me parece que Oyster es una clase anidada en MyAnimals y, como tal, esperaba que se comportara de la misma manera que la clase Birds de arriba. Me falta algo de información clave sobre lo que significa declarar la clase Oyster con un alcance explícito.
¿alguien me puede explicar esto? Encontré cientos de tutoriales de clase de ruby a través de Google, pero ninguno de ellos aborda esta situación.
gracias de antemano ...
¿Alguien escribe código que dependería de qué constante se alcanzaría primero? –