2012-03-04 34 views
5

Khi tôi dán mã này vào dấu nhắc irb, tôi nhận được danh sách thư mục hiện tại sau dòng if true.Hành vi lạ lùng, liệt kê nội dung thư mục hiện tại

def some_method() 

    if true 
     raise StandardError 
    end 

end 

Ví dụ về đầu ra:

irb(main):151:0> def some_method() 
irb(main):152:1> 
irb(main):153:1* if true 
irb(main):154:2> 
.Skype/       .m2/        Desktop/ 
... 

tôi sử dụng irb 0.9.5(05/04/13)ruby 1.8.7 (2011-12-28 patchlevel 357).

Đây có phải là lỗi hoặc điều gì khác không?

+1

điều này rất lạ. phiên làm việc tiếp tục hoạt động sau đó? –

Trả lời

4

Các dòng sau sẽ có ký tự tab trong nó:

 raise StandardError 

irb sử dụng readline có nghĩa là phím tab được sử dụng để hoàn thành tab. Tab kép sẽ hiển thị cho bạn tất cả các tùy chọn có sẵn.

Để xem tính năng này hoạt động, chỉ cần khởi chạy irb và nhấn phím tab hai lần.

Xem https://superuser.com/questions/37148/how-to-disable-double-tab-to-show-available-commands-in-linux-console để biết hướng dẫn về cách tắt tính năng này.

+2

Điều này dẫn đến một trong những ưu điểm thú vị và bí truyền hơn khi sử dụng các tab mềm. –

1

Vì lý do Don Cruickshanks được đề cập, bạn nên đặt tùy chọn chuyển đổi tab thành dấu cách trong trình chỉnh sửa văn bản của mình.

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