关于Ruby动态方法定义的区别

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 时,即使是字符串代码块中抛出的异常,也会显示正确的文件中位置,有利于你调试

你可能感兴趣的:(Ruby)