我要求用户输入要创建的新类的名称。我的代码是:
puts "enter the name for a new class that you want to create"
nameofclass = gets.chomp
nameofclass = Class.new
为什么这不起作用?
另外,我想请用户输入要添加到该类中的方法的名称。我的代码是:
puts "enter the name for a new method that you want to add to that class"
nameofmethod = gets.chomp
nameofclass.class_eval do
def nameofmethod
p "whatever"
end
end
这也不起作用。
最佳答案
如下代码:
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
可能是最容易理解的方法。