我有以下代码行将哈希键设置为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)
是什么原因造成的?
答案 0 :(得分:1)
我认为在这里使用eval
是多余的,您可能想要的是字符串替换:
gates["gate#{inputx}_#{inputy}"] = Gate.new(in1, in2)
使用eval("gate#{inputx}_#{inputy}")
首先替换字符串,然后在所述字符串eval
上执行eval("gate3_4")
,这就是为什么它抱怨缺少变量的原因,因为您正在执行此ruby语句gate3_4
。