Используя значение переменной как другой переменные называют в 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
20
задан jrg 18 August 2011 в 18:57
поделиться

2 ответа

Используйте 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 
31
ответ дан 30 November 2019 в 00:22
поделиться

Переменные экземпляра можно получить с помощью этого метода:

input = instance_variable_get("@one")

После этого в вашем случае у вас будет input , равный " 21 ".

2
ответ дан 30 November 2019 в 00:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: