require_relative不提取变量?

时间:2016-05-12 08:53:14

标签: ruby-on-rails ruby variables require

从_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就会被打印出来!

1 个答案:

答案 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[...]