Ruby的eval系列方法(Kernel#eval,Binding#eval,instance_eval,class_eval)支持两种方式,一是把代码片断作为字符串传递进去,二是传递block。我建议除非代码在运行时动态生成,否则尽量使用code block。因为我发现字符串中的代码对debugger是不可见的--在stack trace中不能准确显示,不能下断点,不能逐步运行,而eval的code block则完全没有问题。
Ruby的eval系列方法(Kernel#eval,Binding#eval,instance_eval,class_eval)支持两种方式,一是把代码片断作为字符串传递进去,二是传递block。我建议除非代码在运行时动态生成,否则尽量使用code block。因为我发现字符串中的代码对debugger是不可见的--在stack trace中不能准确显示,不能下断点,不能逐步运行,而eval的code block则完全没有问题。