在Ruby中使用Eval设置动态哈希名称时遇到问题

时间:2019-06-04 16:41:42

标签: ruby dynamic

我有以下代码行将哈希键设置为xy坐标对,并将其值设置为类实例:

gates[eval("gate#{inputx}_#{inputy}")] = Gate.new(in1, in2)

但是,运行时出现未定义的变量错误。如果我分别将inputx和inputy分别设置为3和4,则得到以下信息:

undefined local variable or method `gate3_4' for main:Object (NameError)

是什么原因造成的?

1 个答案:

答案 0 :(得分:1)

我认为在这里使用eval是多余的,您可能想要的是字符串替换:

gates["gate#{inputx}_#{inputy}"] = Gate.new(in1, in2)

使用eval("gate#{inputx}_#{inputy}")首先替换字符串,然后在所述字符串eval上执行eval("gate3_4"),这就是为什么它抱怨缺少变量的原因,因为您正在执行此ruby语句gate3_4