gpt4 book ai didi

ruby - 在 Ruby 1.9.2 的目录中包含所有模块

转载 作者:数据小太阳 更新时间:2023-10-29 08:06:05 28 4
gpt4 key购买 nike

我在目录modules/ 中放置了一组.rb 文件。这些文件中的每一个都包含一个模块。我正在使用一个单独的脚本加载所有这些文件:

Dir["modules/*.rb"].each {|file| load file }

但随后我必须将它们一一包括在内,明确列出并命名它们中的每一个:

class Foo
include ModuleA
include ModuleB
# ... and so on.
end

我想知道是否有一些非显式的单行代码可以实现这一点,a la(伪代码)......

class Foo
for each loaded file
include the module(s) within that file
end
# ... other stuff.
end

我考虑过实际读取文件的内容,搜索字符串“module”,然后提取模块名称,并以某种方式执行 include 基于那——但这似乎很荒谬。

我正在尝试做的事情是否可取和/或可行?

最佳答案

您可以在每个文件中手动定义一些变量,然后在包含文件时检查其值。

例如,module1.rb:

export = ["MyModule"]

module MyModule

end

第二个,module2.rb:

export = ["AnotherModule", "ThirdModule"]

module AnotherModule

end

module ThirdModule

end

然后将所有这些都包含在您的文件中(只是想法,它可能无法正常工作):

class Foo
Dir["modules/*.rb"].each do |file|
load file
if export != nil
export.each do { |m| include(Kernel.const_get(m))
end
end
end

关于ruby - 在 Ruby 1.9.2 的目录中包含所有模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5764910/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com