为什么这个eval在Ruby中不起作用
发布时间:2020-12-17 04:04:57 所属栏目:百科 来源:网络整理
导读:你能解释一下吗? 我想从两个不同的来源评估值和计算.一个来源给我以下信息(以编程方式): 'a = 2' 第二个来源给我这个表达式来评估: 'a + 3' 这有效: a = 2eval 'a + 3' 这也有效: eval 'a = 2; a + 3' 但我真正需要的是这个,它不起作用: eval 'a = 2'e
你能解释一下吗?
我想从两个不同的来源评估值和计算.一个来源给我以下信息(以编程方式): 'a = 2' 第二个来源给我这个表达式来评估: 'a + 3' 这有效: a = 2 eval 'a + 3' 这也有效: eval 'a = 2; a + 3' 但我真正需要的是这个,它不起作用: eval 'a = 2' eval 'a + 3' 我想了解其中的差异,以及如何使最后一个选项有效. 谢谢你的帮助. 解决方法
您可以创建一个
Binding ,并将相同的绑定与每个
eval 调用相关联:
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 这样,您在先前的eval调用中创建的任何变量都可以在以后使用(只要您使用相同的绑定对象). 而不是使用Kernel :: eval,您可以使用 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |