为以下方便先将获取Eigenclass的代码加入到Object中,代码如下:
class Object
def eigenclass
class << self; self; end
end
end
这样使用 Test.eigenclass即可取得Test变量的Eigenclass,示例代码如下:
class Test; end
Test.instance_eval do
def test1
puts "test1"
end
end
Test.instance_eval do
define_method :test2 do
puts "test2"
end
end
Test.class_eval do
def test3
puts "test3"
end
end
Test.class_eval do
define_method :test4 do
puts "test4"
end
end
t = Test.new
puts Test.instance_methods(false)
puts "=="
puts Test.eigenclass.instance_methods(false)
puts "=="
puts Test.singleton_methods(false)
注意test1和test2的区别。输出如下:
test2
test3
test4
==
test1
==
test1