2017-08-16 16 views
6

Tôi mới dùng Ruby và cố gắng học nó. Tôi đang sử dụng phiên bản Ruby mới nhất (2.4.1) và Ruby Shell tương tác.Ruby 2.4.1 Dir.children (dirname) trả về "undefined method` children 'cho Dir: Class "

Tôi đã xem phương thức children trong lớp Dir. Tôi đã thử ví dụ from the documentation:

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

nhưng nó dường như không làm việc, bởi vì tôi nhận được thông báo sau:

undefined method `children' for Dir:Class 

tôi thiếu gì?

+0

Bạn có chắc chắn ** bạn đang chạy Ruby 2.4.1 không? Vì phương thức này chỉ được giới thiệu trong Ruby 2.4, các phiên bản Ruby trước đó sẽ nâng cao một 'NoMethodError'. –

+0

Trong irb tôi có: RUBY_VERSION => "2.4.1" –

+0

Tôi có thể sao chép số này .... – dawg

Trả lời

8

Điều này có vẻ là một số loại tài liệu gây rối.

Phương pháp đã được giới thiệu với Feature #11302 vào Ruby và là comitted to trunk. Tuy nhiên, nó xuất hiện rằng các bản vá thêm phương pháp này đã không thực sự backported để Ruby 2.4 kể từ dir.c of Ruby 2.4.1 không đề cập đến phương pháp. Không rõ ngay lý do tại sao tài liệu cho phương pháp này được bật lên tại http://ruby-doc.org/

Trong mọi trường hợp, có vẻ như bạn vẫn chưa may mắn với phương pháp này. Tuy nhiên bạn có thể sử dụng mã tương đương sau đây với phiên bản phát hành của bạn:

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

Nó sẽ trở lại các giá trị chính xác giống như Dir.children('testdir') sẽ trong Ruby HEAD.

Các vấn đề liên quan