如何在Ruby文件中加载执行另一rb文件代码并调用其定义变量
Ruby跨文件执行代码并复用变量实现方案
要实现code2.rb执行code1.rb代码且复用code1中定义的变量,核心要解决Ruby文件级局部变量作用域隔离的问题,具体实现方法如下:
首选方案(无需修改code1.rb)
直接在code2.rb中读取code1.rb的内容,在当前上下文执行即可让code1的局部变量直接被code2访问:
修改后的code2.rb代码:
# 读取code1.rb内容并在当前作用域执行 eval(File.read('code1.rb')) a = 10 e = c * 5 + a puts "e = #{e}"
执行ruby code2.rb命令即可得到预期输出:
c = 25 e = 135
备选方案(允许修改code1.rb时使用)
如果允许调整code1.rb的代码,可将需要跨文件访问的变量改为全局变量/实例变量,避开局部变量作用域限制:
- 修改后的
code1.rb代码:
a = 10 b = 15 $c = a + b puts "c = #{$c}"
- 修改后的
code2.rb代码:
# 加载执行code1.rb load 'code1.rb' a = 10 e = $c * 5 + a puts "e = #{e}"
运行后输出结果和首选方案完全一致。
内容的提问来源于stack exchange,提问作者Basa Sai ram
相关产品推荐
相关产品推荐

