簡體   English   中英

在Ruby中使用變量的值作為另一個變量名

[英]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_setrubydoc

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM