2017-07-12 51 views
0

我是Ruby新手,一般編程。目前,我正在使用Ruby中的Dir類。我試圖創建一個Dir對象,然後在這個對象上使用Dir方法。但是,我做錯了什麼。這是我使用的一個小代碼。Class Dir。創建一個對象。紅寶石

$LOAD_PATH 
puts Dir.getwd 
puts Dir.glob("*.rb") 

這工作得很好。我可以看到我的當前目錄並列出所有帶.rb擴展名的文件。

kd = Dir.new("N:/Data-Analytics/Products") 
puts kd.getwd 

在這裏,我創建了一個對象kd指示其他目錄。但是,我有一個消息,getwd是一個未定義的方法。不是kd是Dir的對象嗎?

謝謝您的幫助=)

回答

0

當然​​的一點就是Dir對象......但是,該方法getwd是一個公共類方法不是公共實例方法。因此,getwd不適用於對象。如果要更改目錄,並獲得當前工作目錄,我以爲是你的要求,你可以像你應該使用它像只...... Dir.getwd ...

Dir.chdir("N:/Data-Analytics/Products") #changes the current working directory 

,然後運行,

Dir.getwdDir.pwd# gets current working directory

+0

我不明白爲什麼該方法的條目與我的對象KD工作,但getwd沒有。這兩種方法在Dir類的方法中列出。 – Ona

+1

@Ona'Dir'包含'Enumerable',所以'kd.entries'實際上是['Enumerable#entries'](http://ruby-doc.org/core-2.4.1/Enumerable.html#methodi-i -entries)。這相當於調用'kd.each.to_a' – Stefan

+0

是的,因爲@Stefan說,.entries的工作原理是Dir包含Enumerable ...如果您真的想知道什麼是可用於Dir類的實例方法,您可以始終執行Irb中的'Dir.instance_methods' ... –