在 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::B
search 有沒有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::B
search 有沒有SCOPE
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
參考文件