从_why的书中学习Ruby,我试图重新创建他的代码,但它没有用。
我有一个 world.rb 文件;
puts "Hello World"
Put_the_kabosh_on = "Put the kabosh on"
code_words = {
starmonkeys: "Phil and Pete, thouse prickly chancellors of the New Reich",
catapult: "Chunky go-go",
firebomb: "Heat-Assisted Living",
Nigeria: "Ny and Jerry's Dry Cleaning (with Donuts)",
Put_the_kabosh_on: "Put the cable box on"
}
在我的另一个文件中,pluto.rb;
require_relative "world"
puts "Hello Pluto"
puts code_words[:starmonkeys]
puts code_words[:catapult]
puts code_words[:firebomb]
puts code_words[:Nigeria]
puts code_words[:Put_the_kabosh_on]
我知道我的require_relative
有效,因为如果我运行的pluto.rb没有哈希部分(只是放"Hello World"
),那么Hello World就会被打印出来!
答案 0 :(得分:2)
本地变量是本地变量:它们不会在require
中存活。全局变量($code_words
),常量(CODE_WORDS
)和实例变量(@code_words
)都可以。类变量(@@code_words
)也可以,但是您会收到警告。其中,常数是最不臭的;但如果你把它们放在一个模块中来命名它们会更好:
module World
CODE_WORDS = { ... }
end
和pluto.rb
:
require_relative "world"
puts World::CODE_WORDS[...]