在 ruby 中,A::B 相當於 module A; class B 但實際上會稍微有點不同的地方
module A; class B
在 module A 和 class B 中間宣告的變數,會變成屬於 A module 的 scope,而 class B 也包在 module A 底下,因此可以訪問到 parent 的變數
A::B
而在 A::B 裡面宣告是屬於 A::B 的 scope (也就是 class B)
Example
module A; class B
class B會 search 有沒有SCOPE?- 沒有就往上層找
module A有沒有SCOPE?
A::B
class A::Bsearch 有沒有SCOPE?- 沒有往上層,就到了 global,並沒有
module A這層
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
module A; class B
class B會 search 有沒有SCOPE? 在class A::B已經有設定 scope 因此取得
A::B
class A::Bsearch 有沒有SCOPE?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
參考文件