首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby:类定义上的显式作用域

Ruby:类定义上的显式作用域
EN

Stack Overflow用户
提问于 2011-01-08 00:29:28
回答 1查看 3.6K关注 0票数 22

免责声明:代码取自ruby koans

这来自于对类中常量作用域的讨论。下面是几个类的定义:

代码语言:javascript
复制
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,我理解其中的原因--在继承层次结构之前搜索常量的词法空间。

然后定义这个类:

代码语言:javascript
复制
class MyAnimals::Oyster < Animal
  def legs_in_oyster
    LEGS
  end
end

教程说现在调用MyAnimals::Oyster.new.legs_in_oyster的结果是4,我搞不懂。在我看来,Oyster是MyAnimals中的一个嵌套类,因此我希望它的行为方式与上面的Birds类相同。我遗漏了一些关于声明具有明确作用域含义的Oyster类的关键信息。

有人能给我解释一下吗?我通过Google找到了成百上千的ruby类教程,但它们都没有针对这种情况。

先谢谢你……

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4627735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档