相当于Ruby在Ruby中的动态导入语句?

在python中,要动态加载模块,您可以简单地使用_____import_____语句并将模块分配给变量,即(来自文档):

spam = __import__('spam', globals(), locals(), [], -1) 

我在python中多次使用它来模拟动态模块加载/卸载,因为要“卸载”模块,你可以简单地删除对它的所有引用,即:

 spam = None 

在Ruby中有相同的东西吗? 我查看了其他一些问题( 这个 , 这个和这个 ),但我想知道一种方法将加载的模块约束到变量,如果可能的话。

这样做你想要的吗?

 require 'bigdecimal/math' # a module from stdlib bm = BigMath # a module is just an object BigMath = nil # yields a warning, but BigMath is gone. puts bm.log(10, 40).to_s # it's alter ego lives. #=> 0.230258509299404568401799145468436420760110148862877297632502494462371208E1 

AFAIK,Ruby实际上没有单个导出对象的概念, require d文件可以赋值给变量; 因此,我不知道你会怎么做。

但请注意,您仍然可以使用remove_const类的东西来remove_const定义已经加载的类。

不,不可能。 如果在Ruby中requireload文件,则将文件导入全局命名空间。