Получение ввода данных пользователем В Ruby

cout << text << " " << i << endl;
5
задан the Tin Man 10 December 2012 в 21:24
поделиться

2 ответа

Следующий код:

nameofclass = gets.chomp
nameofclass = Class.new

Интерпретируется машиной как:

Call the function "gets.chomp"
Assign the output of this call to a new variable, named "nameofclass"
Call the function "Class.new"
Assign the output of this call to the variable "nameofclass"

Как вы можете видеть, если вы последуете вышесказанному, есть одна переменная, которой присваивается дважды. Когда происходит второе присваивание, первое теряется.

Предположительно, вы пытаетесь создать новый класс и назвать его так же, как результат gets.chomp . Для этого вы можете использовать eval:

nameofclass = gets.chomp
code = "#{nameofclass} = Class.new"
eval code

Есть и другие способы, это Ruby, но eval , вероятно, самый простой для понимания.

11
ответ дан 18 December 2019 в 10:47
поделиться

Мне нравится ответ troelskn за его довольно частое объяснение происходящего.

Чтобы избежать использования очень опасного eval , попробуйте следующее:

Object.const_set nameofclass, Class.new
5
ответ дан 18 December 2019 в 10:47
поделиться
Другие вопросы по тегам:

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