You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby Kernel#load方法指定模块参数的用法示例及适用场景咨询

Ruby Kernel#load 加载脚本到模块上下文的用法

用法示例

先准备一个要加载的脚本文件 my_script.rb:

# 定义一个方法
def greet
  "Hello from the loaded script!"
end

# 定义实例变量
@message = "This is an instance variable from the script"

# 打印当前执行上下文
puts "Script running in: #{self}"

然后在主程序文件 main.rb 中,把脚本加载到指定模块的上下文:

# 创建一个空模块
module MyModule
end

# 加载脚本到MyModule的上下文里执行
load 'my_script.rb', MyModule

# 调用模块里的方法
puts MyModule.greet
# 输出结果: Hello from the loaded script!

# 访问模块的实例变量
puts MyModule.instance_variable_get(:@message)
# 输出结果: This is an instance variable from the script

# 验证方法确实属于MyModule
puts MyModule.method_defined?(:greet)
# 输出结果: true

运行main.rb后,脚本里的代码会在MyModule的上下文中执行,所有定义的方法和变量都归属于这个模块。

适用场景及原因

  • 避免全局命名空间污染
    很多第三方脚本或复用脚本会直接定义全局方法、变量,直接加载很容易和主程序里的同名内容冲突。把脚本加载到指定模块后,所有定义的内容都被封装在模块内部,完全不会干扰主程序的全局环境。

  • 复用脚本逻辑到不同模块
    如果同一段脚本逻辑需要在多个业务模块中复用,但又希望各个模块的逻辑互相隔离,就可以把脚本分别加载到不同的模块里。不用修改原脚本的任何代码,就能实现逻辑复用同时保证隔离性。

  • 动态扩展模块功能
    可以把模块的功能拆分成多个脚本文件,主模块只保留基础功能,扩展功能写成单独的脚本,需要的时候通过load加载到模块中。这种方式很适合做插件式扩展,想新增功能只需要添加对应的脚本,不用改动主模块的核心代码。

内容的提问来源于stack exchange,提问作者Shamaoke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 03:40:37