如何在Ruby中将字符串转换为对变量的引用?
我需要能够将变量的名称传递到表达式(cucumber)中,并且希望能够将该字符串转换为变量的引用(即,不是副本) e、 g 由于Ruby是一种反思性语言,我确信我所尝试的是可能的,但我还没有破解它。可以帮助你吗?可以帮助你吗 课堂参考 def初始化(变量名称,变量) @getter=eval“lambda{{var{u name}”,vars @setter=eval“lambda{v}{var|u name}=v}”,vars 结束 def值 @getter.call 结束 def值=(新的_值) @setter.call(新值) 结束 结束 这是我从你那儿弄来的。祝你好运 课堂参考 def初始化(变量名称,变量) @getter=eval“lambda{{var{u name}”,vars @setter=eval“lambda{v}{var|u name}=v}”,vars 结束 def值 @getter.call 结束 def值=(新的_值) @setter.call(新值) 结束 结束如何在Ruby中将字符串转换为对变量的引用?,ruby,cucumber,Ruby,Cucumber,我需要能够将变量的名称传递到表达式(cucumber)中,并且希望能够将该字符串转换为变量的引用(即,不是副本) e、 g 由于Ruby是一种反思性语言,我确信我所尝试的是可能的,但我还没有破解它。可以帮助你吗?可以帮助你吗 课堂参考 def初始化(变量名称,变量) @getter=eval“lambda{{var{u name}”,vars @setter=eval“lambda{v}{var|u name}=v}”,vars 结束 def值 @getter.call 结束 def值=(新的_
这是我从你那儿弄来的。祝你好运 一个解决方案可能是将内容包装到一个数组中。可以很容易地通过引用传递
irb(main):001:0> my_var = [10]
=> [10]
irb(main):002:0> my_var_copy = my_var
=> [10]
irb(main):003:0> my_var[0] = 55
=> 55
irb(main):004:0> my_var_copy
=> [55]
看这里-
(有点离题,但给了我解决方案的初步想法)这里-一个解决方案可能是将事物包装到一个数组中。可以很容易地通过引用传递
irb(main):001:0> my_var = [10]
=> [10]
irb(main):002:0> my_var_copy = my_var
=> [10]
irb(main):003:0> my_var[0] = 55
=> 55
irb(main):004:0> my_var_copy
=> [55]
看这里-
(有点离题,但给出了解决方案的初步想法)这里-很接近,但感觉这只是一种稍微干净的评估方法。据我所知,它仍然没有返回对对象本身的引用,这是一个惊人的巧合,尽管这正是我对控制器进行RSpec测试所需要的:)不,你是对的。它不会返回引用,而是设置或获取实例变量的值。据我所知,这就是你所需要的。无论如何,至少它在某种程度上帮助了你:-)它很接近,但感觉它只是一种稍微干净一点的评估方式。据我所知,它仍然没有返回对对象本身的引用,这是一个惊人的巧合,尽管这正是我对控制器进行RSpec测试所需要的:)不,你是对的。它不会返回引用,而是设置或获取实例变量的值。据我所知,这就是你所需要的。无论如何,至少它在某种程度上帮助了你:-)非常好-这正是我所期望的,谢谢你。它仍然不是100%,因为我需要使用ref_name.value,但它比我得到的要好。我上面提供的链接有ref_name.value的示例用法。它应该有你需要的。很好-这正是我想要的,谢谢。它仍然不是100%,因为我需要使用ref_name.value,但它比我得到的要好。我上面提供的链接有ref_name.value的示例用法。到目前为止,我一直在使用散列,并通过基于字符串的键引用变量。这并不像我想得到的那么接近,但是Job确实如此,我到目前为止一直在使用散列,并通过基于字符串的键引用变量。它不像我想的那么近,但能胜任这项工作
irb(main):001:0> my_var = [10]
=> [10]
irb(main):002:0> my_var_copy = my_var
=> [10]
irb(main):003:0> my_var[0] = 55
=> 55
irb(main):004:0> my_var_copy
=> [55]