2017-08-16 70 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。