Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ruby中将类名作为变量传递_Ruby_Class_Variables - Fatal编程技术网

如何在ruby中将类名作为变量传递

如何在ruby中将类名作为变量传递,ruby,class,variables,Ruby,Class,Variables,我有foo.rb和main.rb文件,它们是由另一个文件创建的 foo.rb: class Foo def initialize @val = 1 end end main.rb: file_name = gets.chomp() require_relative(file_name) class_name = file_name.capitalize a = class_name.new() p "This is val: #{a.val}" 但是我得到了一个错误:undef

我有foo.rb和main.rb文件,它们是由另一个文件创建的

foo.rb:

class Foo
  def initialize
   @val = 1
  end
end
main.rb:

file_name = gets.chomp()
require_relative(file_name)
class_name = file_name.capitalize
a = class_name.new()
p "This is val: #{a.val}"
但是我得到了一个错误:
undefined method
new',用于“Foo.rb”:String(NoMethodError)`


我的问题:如何将类名作为值传递。

您需要删除扩展名

class_name = Object.const_get(file_name.capitalize[/^[^.]*/])

您不需要regexp…:-)我的意思是,我们有一个方法。你把它标记为重复的,但你提供了一个答案