免责声明:代码取自ruby koans
这来自于对类中常量作用域的讨论。下面是几个类的定义:
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
此时,执行MyAnimals::Bird.new.legs_in_bird
的结果是2,我理解其中的原因--在继承层次结构之前搜索常量的词法空间。
然后定义这个类:
class MyAnimals::Oyster < Animal
def legs_in_oyster
LEGS
end
end
教程说现在调用MyAnimals::Oyster.new.legs_in_oyster
的结果是4,我搞不懂。在我看来,Oyster是MyAnimals中的一个嵌套类,因此我希望它的行为方式与上面的Birds类相同。我遗漏了一些关于声明具有明确作用域含义的Oyster类的关键信息。
有人能给我解释一下吗?我通过Google找到了成百上千的ruby类教程,但它们都没有针对这种情况。
先谢谢你……
https://stackoverflow.com/questions/4627735
复制相似问题