A.class_eval(<<-EOF, __FILE__, __LINE__ + 1)
def method_a
puts "calling method_a......"
end
EOF
A.class_eval <<-EOF
def method_b
puts "calling method_b......"
end
EOF
A.new.method_a
A.new.method_b
如上,两种方法定义的区别在于,如果你使用了带有 FILE, LINE + 1 时,即使是字符串代码块中抛出的异常,也会显示正确的文件中位置,有利于你调试