为以下方便先将获取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
本文通过示例代码详细介绍了如何在Ruby中利用Eigenclass特性,为特定实例添加方法,并展示了如何区分实例方法、Eigenclass方法及类方法。
896

被折叠的 条评论
为什么被折叠?



