您的位置:首页 > 其它

instance_eval,class_eval,def以及define_method

2013-06-27 17:18 417 查看
为以下方便先将获取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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: