2012-03-03 45 views

回答

4

你可以用一个实例变量做到这一点很容易这样:

>> a = "variable" 
=> "variable" 
>> instance_variable_set(:"@#{a}_name", []) 
=> [] 
>> @variable_name 
=> [] 

如果你很好奇,为什么这很容易与伊娃的事,阅读关于Ruby变量绑定和范围规则的信息。

+0

谢谢你的帮助:) – 2012-03-03 02:33:10

+0

在这个@#{a} _name中做什么#是:将它设置为符号? – 2012-03-03 02:46:46

+0

@CoryGwin:领先的':'使它成为一个符号,双引号字符串中的'#{}'就是普通的字符串插值。 – 2012-03-03 03:25:23

3

但不这样做。因此,更容易和更好地使用哈希:

variable = {} 
variable['name'] = [] 

vars = {} 
vars[["variable", "name"]] = [] 
+0

对于未定义的var或方法,强烈建议使用散列。它可以照顾它 – ziq 2012-03-03 02:44:39

+0

我认为这是名称间距?如果它是类的一部分,或者我猜对象实例呢? – 2012-03-03 02:46:15

+0

这个问题之前已经被问过了,我还没有看到一个很好的理由去做。 Php有一些可变的插值,我怀疑大多数这样的问题是人们把这种可憎的东西带入ruby ......;) – DGM 2012-03-03 03:46:17

1

柜面你还是想用变量的事:

>> a = 'variable' 
=> "variable" 
>> eval(a + '_name=[]') 
=> [] 
>> variable_name 
=> [] 

希望你能理解的eval怎么邪恶!