2011-04-25 39 views

Trả lời

23

Tìm phương pháp trong hạt nhân, đối tượng và mô-đun: ví dụ: local_variables, instance_methods, instance_variables.

Các phương pháp tuyệt vời khác trong đó. inspect là một số khác.

+0

Bạn có nghĩa là 'inspect' cho thấy biến chẳng hạn? – sawa

+0

@sawa, kiểm tra sẽ hiển thị instance_variables quá (tức là trừ khi nó đã được ghi đè cho một lớp để hiển thị cái gì khác thay thế) – Zabba

+0

ai đó có thể giải thích làm thế nào anh chàng này được nhắc: "hiển thị tất cả 152 phương pháp có sẵn?" http://www.youtube.com/watch?v=J_9H1WPV2Ws#t=0m15s – lukemh

6

Để tìm ra các biến mẫu, bạn có thể sử dụng Kernel#instance_variables như Zabba đã chỉ ra.

Đối với các phương pháp có sẵn trên một đối tượng, tôi sử dụng my_object.methods - Object.methods để tìm hiểu các phương pháp không rõ ràng có sẵn cho đối tượng của tôi. Điều này thu hẹp danh sách và dễ đọc.

+0

Có lẽ bạn nên thay đổi điều đó thành 'my_object.methods.sort - Object.new.methods' - khi nó đứng, bạn trừ các phương thức lớp' Object' khỏi danh sách các phương thức của 'my_object'. – RoUS

+0

Đúng. Tuy nhiên trong Ruby, 'Object.class' là' Class' là một thể hiện của lớp 'Class', vì vậy nó vẫn có các phương thức từ' Object.methods'. – Swanand

14

Câu trả lời hay.
Khi bạn khám phá, bạn có những ý của bạn:

obj.private_methods 
obj.public_methods 
obj.protected_methods 
obj.singleton_methods 

MyClass.private_instance_methods 
MyClass.protected_instance_methods 
MyClass.public_instance_methods 

Cách sử dụng như sau:

obj.public_methods.sort 

có thể làm xét dễ dàng quá.

Một số trường hợp đặc biệt tồn tại như

String.instance_methods(false).sort 

... sẽ cung cấp cho bạn chỉ có phương pháp dụ định nghĩa trong lớp String, bỏ qua các lớp mà nó thừa hưởng từ bất kỳ tổ tiên. Như tôi mong đợi bạn biết, bạn có thể xem thêm tại đây: http://www.ruby-doc.org/docs/ProgrammingRuby/ nhưng nó không phải là vui vẻ như kiểm tra và phản ánh trong irb.

vui vẻ khám phá -

Perry

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