如何在ruby中将类名作为变量传递
我有foo.rb和main.rb文件,它们是由另一个文件创建的 foo.rb:如何在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
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…:-)我的意思是,我们有一个方法。你把它标记为重复的,但你提供了一个答案