hri*_*rds 20 ruby variables dynamic-variables
我刚刚开始学习Ruby,我编写了一个生成一些数字的程序,并将它们分配给变量@ one,@ two,@ three等.然后用户可以通过输入它的名称来指定要更改的变量(例如一).然后我需要做'@ [valueofinout] = asd'之类的事情.我怎么会这样做,并且有更好的方式,因为我想的方式似乎被劝阻了?我发现了
x = "myvar"
myvar = "hi"
eval(x) -> "hi"
Run Code Online (Sandbox Code Playgroud)
但我不完全理解为什么需要第二行.在我的情况下,我会使用类似的东西
@one = "21"
input = "one"
input = "@" + input
changeto = "22"
eval(input) -> changeto
Run Code Online (Sandbox Code Playgroud)
rjh*_*rjh 31
使用instance_variable_set(rubydoc)
instance_variable_set("@" + varname, value)
Run Code Online (Sandbox Code Playgroud)
但在大多数情况下,您应该将正常的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18655 次 |
| 最近记录: |