如何访问包含文件中定义的变量?
# inc.rb
foo = "bar";
# main.rb
require 'inc.rb'
puts foo
# NameError: undefined local variable or method `foo' for main:Object
Run Code Online (Sandbox Code Playgroud)
Chu*_*uck 15
您无法访问其定义范围之外的本地 - 本例中的文件.如果您想要跨越文件边界的变量,请将它们设置为除本地之外的任何变量 $foo,Foo并且@foo将所有的工作.
如果你真的不想在符号上放置任何类型的装饰(因为你不喜欢它的读取方式,可能),一个常见的黑客只是将它定义为一种方法:def foo() "bar" end.
我接受了Chuck的答案,因为它是一个不错的解决方案,但我实际上使用了一种不同的方法,我认为我会分享.这是非常hacky,但对我的目的很有用.我需要扫描一个包含数百个文件的目录,每个文件创建一个具有相同名称的对象,然后转储有关每个对象的一些信息.对于任何严重和非临时目的,我不建议这样做!
foo = ""
eval File.open('inc.rb').read
puts foo # "bar"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5507 次 |
| 最近记录: |