class E
define_method(:me){|x , y=0, z = :block| # 设置参数
puts x,y # 第一步 输出x,y
if z.is_a?(Proc) # 如果给出了过程
r = z.call(1,2) # 呼叫过程 获取返回值
return if r = -1 # 如果返回的是特定的错误代码 return
end
puts y,x # 如果没有问题 输出y,x
}
end
ex = E.new
p = Proc.new{|a,b|
puts a + b # 过程第一步 返回a+b的值
next -1 # 返回
puts a - b # 如果没返回 输出a-b的值
}
self.class.send :define_method, m do |*aaa, &block|
# *aaa是原方法的参数 &block是原方法的区块
method("_______#{m}").call(*aaa, &block) # 呼叫原方法
add_on_block.call # 呼叫新增的区块
end
end
end
self.class.send :define_method, m do |*aaa, &block|
# *aaa是原方法的参数 &block是原方法的区块
method("_______#{m}").call(*aaa, &block) # 呼叫原方法
add_on_block.call # 呼叫新增的区块
end
end