Ruby从文件中读取变量

时间:2013-10-20 01:21:51

标签: ruby file variables

我正在制作一个基于文本的小游戏,我希望保存游戏并在以后加载数据。我设法让游戏创建一个文本文件,以这样的格式存储所有变量及其值:

first_name = "Name"
last_name = "Last Name"
bank = 10000
...

当我选择加载时,我希望它读取文本并分配适当的变量。我可以这样做吗?

4 个答案:

答案 0 :(得分:1)

一个选项:您可以使用IO.readlines,它将返回您可以解析的字符串数组。如果您已经考虑过一组变量(并且由代码使用),那么您可以抓住引号中的内容。看看what ruby can do with strings

答案 1 :(得分:1)

除非使用其他答案中提出的元评估技术(如评估或解析文件),否则不能使用局部变量。如果你想在没有元编程黑客的情况下这样做,你需要使用其他类型的变量或常量。准备一个模块(这是一种特殊类型的常量)进行设置可能有所帮助。

在主文件中:

module Setting
  def self.set h; @h = h end
  def self.call @h end
end
load(path_to_setting_file)

在设置文件中:

Setting.set(
  first_name: "Name",
  last_name: "Last Name",
  bank: 10000,
)

从主文件中调用它:

Setting.call
# => {
  first_name: "Name",
  last_name: "Last Name",
  bank: 10000,
}

如果您不喜欢,那么您应该使用YAML。

答案 2 :(得分:1)

最快最简单的方法是使用Marshal

# Save data
data = Marshal.dump(game_state)

# Load data
game_state = Marshal.load(data)

如果您希望您的游戏数据架构不断变化,您可能需要考虑将数据存储在散列或Hashie::Mash中,而不是使用实例变量。

答案 3 :(得分:0)

大致是:

    variable_file = File.open("./myfile.txt")
    variable_file.each do |variable_line|
    variable_line.chomp!
    #split on " = "
    #gsub out the quotes
    #add to hash where name is key and value is value
    end
    #your program uses the hash to access the values