2012-03-03 72 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怎麼邪惡!