如何訪問在包含文件中定義的變量?從Ruby中的包含文件訪問變量
# inc.rb
foo = "bar";
# main.rb
require 'inc.rb'
puts foo
# NameError: undefined local variable or method `foo' for main:Object
如何訪問在包含文件中定義的變量?從Ruby中的包含文件訪問變量
# inc.rb
foo = "bar";
# main.rb
require 'inc.rb'
puts foo
# NameError: undefined local variable or method `foo' for main:Object
您不能在本例中定義的範圍之外訪問本地範圍以外的本地。如果你想要跨越文件邊界的變量,除了當地人之外,任何東西都可以。 $foo
,Foo
和@foo
都將工作。
如果你真的不想在符號上加任何裝飾(因爲你不喜歡它的讀法,也許),一個常見的黑客就是將它定義爲一個方法:def foo() "bar" end
。
我接受查克的答案,因爲這是一個體面的解決方案,但是我實際上使用了一種不同的方法,我認爲我會分享。這非常令人難以置信,但對我的目的很有用。我需要掃描一個包含數百個文件的目錄,每個文件創建一個具有相同名稱的對象,然後轉儲有關每個對象的一些信息。對於任何嚴重和非臨時的目的,我不會推薦這個!
foo = ""
eval File.open('inc.rb').read
puts foo # "bar"
我通常只是將它們定義爲方法。類似於nickf所說的。
文件1:
def static_path
'/opt/foo'
end
文件2:
static_path
然後,只需添加一個:
require_relative 'file path/file name'
或require_relative 'file name'
< =如果文件在同一目錄。
到要使用的方法/變量的文件中。