2017-08-16 65 views
6

我是Ruby新手,試圖學習它。我使用最新的Ruby版本(2.4.1)和交互式Ruby Shell。Ruby 2.4.1 Dir.children(dirname)返回「未定義的子類」方法:類「

我遇到Dir類中的children方法。我試過的例子from the documentation

Dir.children("testdir") #=> ["config.h", "main.rb"] 

,但它似乎沒有工作,因爲我得到以下信息:

undefined method `children' for Dir:Class 

我缺少什麼?

+0

你確定**你正在運行Ruby 2.4.1嗎?由於該方法僅在Ruby 2.4中引入,因此早期的Ruby版本將引發'NoMethodError'。 –

+0

在irb中我得到了: RUBY_VERSION =>「2.4.1」 –

+0

我可以複製這個.... – dawg

回答

8

這似乎是某種文檔混亂。

方法引入Feature #11302到Ruby中,並且是comitted to trunk。但是,添加此方法的補丁似乎並未實際回溯到Ruby 2.4,因爲dir.c of Ruby 2.4.1未提及此方法。目前還不清楚爲什麼這種方法的文檔變爲http://ruby-doc.org/

無論如何,看起來你還沒有用這種方法運氣。但是,您可以使用下面的等效代碼與你的發行版:

Dir.entries('testdir') - [".", ".."] 

它會返回完全相同的值Dir.children('testdir')會在Ruby中HEAD。