新手问题 'class A::C' 这样的 class 定义表示什么意思?

msl12 · 发布于 2016年11月05日 · 最后由 msl12 回复于 2016年11月05日 · 528 次阅读
60a8f6

看书的时候看到这里看不太明白,书里写得也不是特别清楚:

module A
end

class A::C
end

p A::C.ancestors # [A::C, Object, Kernel, BasicObject]

我还以为这样是表示C继承于A呢,但是结果表示并不是继承的写法,那么这里是表示的什么意思呢? 😮

共收到 4 条回复
23959

相当于namespace 命名空间

314

一楼已经给出正确解释,我补充下,相当于在 module A 里定义 class,

module A
  class C
  end
end

继承是下面的写法:

class B
end

class C < B
end
60a8f6

原来如此,懂了~ 😆

60a8f6

和在module A里直接定义class的作用域似乎不同

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册