3
A
回答
4
File
是指在當前範圍內的File
不斷使用MyModule::File
,而::File
總是指Object::File
。
p File
# File
p ::File
# File
module Another
module File
end
p File
# Another::File
p ::File
# File
end
因此,::
類似於文件系統的根目錄,你在類似於當前目錄中的模塊。
對於當前詞法範圍的面向對象訪問,請參閱Module.nesting。
2
當你用一個短名稱(File
)引用一個類時,ruby將使用最近範圍內的一個類。看:
module MyModule
class File
def initialize *args; end
end
class Foo
def initialize
@file = File.new
end
attr_accessor :file
end
end
f = MyModule::Foo.new
f.file.class # => MyModule::File
file2 = File.new 'newfile', 'w'
file2.class # => File
所以,Foo
認爲比頂級的代碼不同File
。但是,如果Foo
均使用此代碼:
@file = ::File.new
然後,它會使用「全局」 File
類,而不是本地MyModule
。以類似的方式,我們可以在頂級
file2 = MyModule::File.new 'newfile', 'w'
相關問題
- 1. * .php和* .html文件之間的區別
- 2. X3D和X3DV文件之間的區別
- 3. Blob和文件之間的區別
- 4. .html和.twig文件之間的區別
- 5. .SQL和.DUMP文件之間的區別
- 6. .o和.ko文件之間的區別
- 7. rails中的助手文件和lib文件之間的區別
- 8. 識別普通文件夾和「。」/「..」文件夾之間的區別
- 9. AB Initio中串行文件和多文件之間的區別
- 10. Eclipse中src /文件夾和文件夾之間的區別
- 11. 文本文件和ascii文件之間的任何區別?
- 12. cat文件的linenumbers之間的區別| nl和wc -l文件
- 13. macOS上的「Python」文件和「python2.7」文件之間的區別
- 14. .msg文件和.eml文件之間的區別
- 15. .edmx文件和創建Entities.cs文件之間的區別
- 16. HDF5文件和PyTables文件之間的區別
- 17. Web服務文件和類文件之間的區別
- 18. 兩個文件之間的區別
- 19. C++文件之間的區別
- 20. 2個exe文件之間的區別
- 21. Ruby中+和<<之間的區別
- 22. 文件中和數據庫中的會話之間的區別
- 23. 「測試-a文件」和「測試文件-ef文件」之間的區別
- 24. 清單文件和xml文件之間有什麼區別android
- 25. Xcode中的文件夾和組之間的區別?
- 26. Vim中的文件>關閉和關閉之間的區別
- 27. Android中的文件,類和活動之間的區別
- 28. tomcat中的wtpwebapps和webapps文件夾之間的區別
- 29. 文件名中的hello /和hello之間的區別,URI
- 30. Java中的文件和DocumentFile之間的區別