【发布时间】:2023-03-16 16:00:01
【问题描述】:
大家好。
这个问题是上一个问题的延续:
Is it possible to extend a class by using a string as a module ? - Ruby 2.7.1
原来如此。我目前正在我的 FreeBSD 12.1 工作站上使用 Ruby 2.7.1 进行一些测试。我的目标是找到一种方法来加载目录中的所有脚本。这些脚本是具有可预测名称的模块。例如,如果我有一个名为 mymodule.rb 的脚本,它将包含一个名为:Mymodule 的模块和一个方法:mymodule。因此,我可以使用数组列出目录中的所有脚本。我可以使用该列表轻松加载/要求我的所有脚本文件。在一些 .sub、.chop 或 .capitalize 的帮助下,我可以从数组的每个索引中提取我需要的内容。但是这个操作的结果总是一个字符串。问题是我无法使用字符串执行方法。以前我在用字符串中的模块名称扩展我的主类时遇到问题,但是给出了答案并解决了这个小问题。这是我的主要课程:
load "mymodule.rb"
class Myclass
def mymethod
var1 = "Mymodule"
extend self.class.const_get(var1)
var2 = "mymodule"
#I need something here to call the method from the module.
#puts @varmod
end
end
a = Myclass.new
a.mymethod
这是我的模块:
module Mymodule
def mymodule
@varmod = "TEST"
end
end
所以,我想知道是否有一种方法可以在 Mymodule 中执行与“扩展 self.class.const_get(var1)”相同的方法。
提前感谢您的回复!
【问题讨论】:
标签: ruby string methods module execute