Ruby Koans: alcance explícito en una definición de clase parte 2

Quería aclarar algunas cosas de este @ originenvia. La respuesta sugirió que Ruby busca la definición constante en este orden:

El alcance de cierre Cualquier ámbito externo (repita hasta alcanzar el nivel superior) Módulos incluidosSuperclase (s)ObjetNúcle

ara aclarar, en qué paso (1-6) es el valor de la constanteLEGS encontrado paralegs_in_oyster? ¿Es de la SuperclaseAnimal? Es el alcance de la claseMyAnimals ignorado porque no se considera un ámbito de cobertura? ¿Es esto debido a la explícitaMyAnimals::Oyster definición de clase?

¡Gracias! Solo trato de entender. Aquí está el código:

 class Animal
   LEGS = 4
   def legs_in_animal
     LEGS
   end

   class NestedAnimal
     def legs_in_nested_animal
       LEGS
     end
   end
 end

 def test_nested_classes_inherit_constants_from_enclosing_classes
   assert_equal 4, Animal::NestedAnimal.new.legs_in_nested_animal
 end

 # ------------------------------------------------------------------

 class MyAnimals
   LEGS = 2

   class Bird < Animal
     def legs_in_bird
       LEGS
     end
   end
 end

 def test_who_wins_with_both_nested_and_inherited_constants
   assert_equal 2, MyAnimals::Bird.new.legs_in_bird
 end

 # QUESTION: Which has precedence: The constant in the lexical scope,
 # or the constant from the inheritance heirarachy?

 # ------------------------------------------------------------------

 class MyAnimals::Oyster < Animal
   def legs_in_oyster
     LEGS
   end
 end

 def test_who_wins_with_explicit_scoping_on_class_definition
   assert_equal 4, MyAnimals::Oyster.new.legs_in_oyster
 end

 # QUESTION: Now Which has precedence: The constant in the lexical
 # scope, or the constant from the inheritance heirarachy?  Why is it
 # different than the previous answer?
 end

Respuestas a la pregunta(1)

Su respuesta a la pregunta