[英]Using the value of a variable as another variables name in Ruby
我剛開始學習Ruby,並且編寫了一個程序,該程序生成一些數字並將其分配給變量@ one,@ two,@ three等。然后,用戶可以通過輸入變量名稱來指定要更改的變量(例如一)。 然后,我需要做類似“ @ [valueofinout] = asd”的操作。 我將如何執行此操作,是否有更好的方法可以阻止我正在考慮的方法? 我發現了
x = "myvar"
myvar = "hi"
eval(x) -> "hi"
但我不完全理解為什么需要第二行。 就我而言,我會使用類似
@one = "21"
input = "one"
input = "@" + input
changeto = "22"
eval(input) -> changeto
使用instance_variable_set
( rubydoc )
instance_variable_set("@" + varname, value)
不過,在大多數情況下,您應該將普通的Ruby變量與用戶正在與之交互的變量分開。 如何創建用戶變量的哈希,例如
@uservars = { 'one' => 1, 'two' => 2 }
two = @uservars['two'] # Look up 'two' variable
varname = "myvar"
@uservars[varname] = 5 # Set a variable by name
value = @uservars[varname] # Get a variable by name
實例變量可以通過以下方法檢索:
input = instance_variable_get("@one")
此后,對於您來說,您將input
等於“ 21”的input
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.