为什么这个评估在Ruby中不起作用

为什么这个评估在Ruby中不起作用,ruby,Ruby,你能解释一下吗 我想评估两个不同来源的数值和计算结果。一个源向我提供以下信息(以编程方式): 第二个来源为我提供了要计算的表达式: 'a + 3' 这项工作: a = 2 eval 'a + 3' 这也适用于: eval 'a = 2; a + 3' 但我真正需要的是这个,它不起作用: eval 'a = 2' eval 'a + 3' 我想了解其中的区别,以及如何让最后一个选项起作用 感谢您的帮助。您可以创建一个,并将相同的绑定与每个调用相关联: 正是我需要的。谢谢 eval 'a =

你能解释一下吗

我想评估两个不同来源的数值和计算结果。一个源向我提供以下信息(以编程方式):

第二个来源为我提供了要计算的表达式:

'a + 3'
这项工作:

a = 2
eval 'a + 3'
这也适用于:

eval 'a = 2; a + 3'
但我真正需要的是这个,它不起作用:

eval 'a = 2'
eval 'a + 3'
我想了解其中的区别,以及如何让最后一个选项起作用

感谢您的帮助。

您可以创建一个,并将相同的绑定与每个调用相关联:


正是我需要的。谢谢
eval 'a = 2'
eval 'a + 3'
1.9.3p194 :008 > b = binding
 => #<Binding:0x00000100a60c60> 
1.9.3p194 :009 > eval 'a = 2', b
 => 2 
1.9.3p194 :010 > eval 'a + 3', b
 => 5 
1.9.3p194 :011 > b = binding
 => #<Binding:0x00000100b46aa8> 
1.9.3p194 :012 > b.eval 'a = 2'
 => 2 
1.9.3p194 :013 > b.eval 'a + 3'
 => 5