1 #!/usr/local/bin/ruby
2 # encoding: utf-8
3 class Demo
4 def self.class_method
5 end
6 def public_method
7 end
8 private
9 def private_method
10 end
11 protected
12 def protected_method
13 end
14 class << self
15 def class_singleton_method
16 end
17 end
18 end
19
20
21 m1 = Demo.methods.select{ |m| m =~ /methods/ } # => ["public_methods", "methods", "instance_methods", "singleton_methods", "public_instance_methods", "protected_methods", "protected_instance_methods", "private_methods", "private_instance_methods"]
22
23 demo = Demo.new
24 m2 = demo.methods.select{ |m| m =~ /methods/ } # => ["public_methods", "methods", "singleton_methods", "protected_methods", "private_methods"]
25
26 puts "<Methods for Demo class>"
27 m1.map { |m| [m, Demo.send(m,false)] }.each { |k,v| puts "#{k} -> #{v}" }
28 puts "\n<Methods for demo object>"
29 m2.map { |m| [m, demo.send(m,false)] }.each { |k,v| puts "#{k} -> #{v}" }
- methods:自分が使えるメソッドを返す。falseの場合selfメソッド(Singletonメソッド)のみを返す(singletonメソッドと同じ)
- singleton_methods:そのSingletonメソッドを返す
- public_methods, protected_methods:自分が使えるメソッドを返す。つまりそのオブジェクトのクラスに定義されているpublic_instance_methodsおよびprotected_instance_methodsを返す。クラスにおいてmethods=public_methods+protected_methodsである。falseの場合はそのクラスへの継承メソッドは含まない。
- private_methods:そのオブジェクトのクラスに定義されているprivate_instance_methodsを返す
- instance_methods, public_instance_methods, protected_instance_methods, private_instance_methods:クラスオブジェクト(もジュールを含む)だけが使えるメソッドで、そのクラスに定義されているinstanceメソッドを返す。falseの場合はそのクラスへの継承メソッドは含まない
No comments:
Post a Comment