Tôi mới dùng ruby và đang chơi với IRB.Làm thế nào để bạn liệt kê các đối tượng hiện có sẵn trong phạm vi hiện tại trong ruby?
Tôi thấy rằng tôi có thể liệt kê các phương thức của một đối tượng bằng cách sử dụng phương thức ".methods", và self.methods đó cung cấp cho tôi những gì tôi muốn (tương tự với thư mục Python (builtins)?), Tôi tìm thấy các phương pháp của một thư viện/mô-đun tôi đã tải thông qua bao gồm và yêu cầu?
irb(main):036:0* self.methods
=> ["irb_pop_binding", "inspect", "taguri", "irb_chws", "clone", "irb_pushws", "public_methods", "taguri=", "irb_pwws",
"public", "display", "irb_require", "irb_exit", "instance_variable_defined?", "irb_cb", "equal?", "freeze", "irb_context
", "irb_pop_workspace", "irb_cwb", "irb_jobs", "irb_bindings", "methods", "irb_current_working_workspace", "respond_to?"
, "irb_popb", "irb_cws", "fg", "pushws", "conf", "dup", "cwws", "instance_variables", "source", "cb", "kill", "help", "_
_id__", "method", "eql?", "irb_pwb", "id", "bindings", "send", "singleton_methods", "popb", "irb_kill", "chws", "taint",
"irb_push_binding", "instance_variable_get", "frozen?", "irb_source", "pwws", "private", "instance_of?", "__send__", "i
rb_workspaces", "to_a", "irb_quit", "to_yaml_style", "irb_popws", "irb_change_workspace", "jobs", "type", "install_alias
_method", "irb_push_workspace", "require_gem", "object_id", "instance_eval", "protected_methods", "irb_print_working_wor
kspace", "irb_load", "require", "==", "cws", "===", "irb_pushb", "instance_variable_set", "irb_current_working_binding",
"extend", "kind_of?", "context", "gem", "to_yaml_properties", "quit", "popws", "irb", "to_s", "to_yaml", "irb_fg", "cla
ss", "hash", "private_methods", "=~", "tainted?", "include", "irb_cwws", "irb_change_binding", "irb_help", "untaint", "n
il?", "pushb", "exit", "irb_print_working_binding", "is_a?", "workspaces"]
irb(main):037:0>
Tôi đã quen với trăn, nơi tôi sử dụng dir() chức năng để thực hiện điều tương tự:
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>>
ok, tôi đang học chậm. Điều này mang lại câu hỏi tiếp theo của tôi, sự khác biệt giữa "bao gồm" và "yêu cầu" là gì? Tôi sẽ đi làm một số đọc, nhưng làm thế nào có thể được nhìn thấy phương pháp được tải thông qua "yêu cầu"? – monkut
Bao gồm sẽ thêm các hằng số, phương thức và biến mô đun vào phạm vi hiện tại. Nó thường được sử dụng để thêm chức năng cho một lớp. A yêu cầu tải một tệp ruby khác (nếu nó chưa được tải). Nếu bạn muốn tải nó (ngay cả khi nó đã được tải), hãy sử dụng phương thức "tải" thay thế. –
Thông thường một tệp được yêu cầu sẽ tải một lớp. Ví dụ, yêu cầu 'foo' sẽ tải các lớp Foo. Vì vậy, bạn có thể nhận được một danh sách các phương thức trong lớp đó bằng cách thực hiện Foo.methods (false). Nếu tệp được yêu cầu chỉ là một loạt các phương thức: orig = Object.private_methods; yêu cầu 'foo'; p Object.private_methods - orig –