【问题标题】:In Ruby, how can I maintain a long list of instance variables from a file?在 Ruby 中,如何从文件中维护一长串实例变量?
【发布时间】:2019-06-08 21:54:03
【问题描述】:

例如,我将很多实例变量存储在 YAML 文件中。这允许我在程序运行时更改程序的状态。但是,每次添加新变量时,我都需要更改读取文件的方法。

例如

config = YAML.open_file 'config.yml'
@var1 = config["var1"]
@var2 = config["var2"]
@var3 = config["var3"]
@var4 = config["var4"]
@var5 = config["var5"]
...

当我在 YAML 文件中添加变量时,我怎样才能使它更加动态并且不需要更改它?

【问题讨论】:

    标签: ruby yaml


    【解决方案1】:

    使用 Ruby 元编程!

    instance_variable_set是你的朋友:

    config = YAML.load_file 'config.yml'
    config.each do |key,value|
      instance_variable_set('@'+key, value)
    end
    

    测试:

    puts @var1
    

    【讨论】:

    • 在此处查看 Ruby 文档:ruby-doc.org/core-2.6.3/… 如果您对此问题感兴趣,也值得看看那里的一些其他方法,特别是 getter #instance_variable_get#instance_variables跨度>
    猜你喜欢
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2013-12-05
    相关资源
    最近更新 更多