处理40+;Ruby 2.1.0中的变量

处理40+;Ruby 2.1.0中的变量,ruby,Ruby,我刚刚继承了一个脚本,在Ruby 2.1.0中预定义了40多个变量作为默认值,然后是OptionParser函数 如果没有配置文件,有没有更好的方法来处理这个问题 我已经看到一些其他的gem似乎可以解决这个问题,但是我正试图把东西保存到std/core库中,这样我就不必让我的整个组织安装另一个gem,如果我可以避免的话 此外,如果要使用配置文件,任何关于这方面的细节都将不胜感激。一个需要用默认值预定义40个变量的脚本可能做得太多了——特别是如果你“继承”它的第一反应是重构它的话 我尊重坚持std

我刚刚继承了一个脚本,在Ruby 2.1.0中预定义了40多个变量作为默认值,然后是OptionParser函数

如果没有配置文件,有没有更好的方法来处理这个问题

我已经看到一些其他的gem似乎可以解决这个问题,但是我正试图把东西保存到std/core库中,这样我就不必让我的整个组织安装另一个gem,如果我可以避免的话


此外,如果要使用配置文件,任何关于这方面的细节都将不胜感激。

一个需要用默认值预定义40个变量的脚本可能做得太多了——特别是如果你“继承”它的第一反应是重构它的话


我尊重坚持std/核心库的冲动。也许您应该在这里考虑一下Unix的理念,即“只做一件事,把它做好”,并找到一种方法将脚本分解成更小的脚本,每个脚本都有一个更明确的目的。

一个需要用默认值预定义40个变量的脚本可能做得太多了,特别是如果您的第一直觉是“继承”的话这是重构它的关键


我尊重坚持std/核心库的冲动。也许您应该在这里考虑一下Unix的理念,即“只做一件事,把它做好”,并找到一种方法将脚本分解成更小的脚本,每个脚本都有一个更明确的目的。

一个需要用默认值预定义40个变量的脚本可能做得太多了,特别是如果您的第一直觉是“继承”的话这是重构它的关键


我尊重坚持std/核心库的冲动。也许您应该在这里考虑一下Unix的理念,即“只做一件事,把它做好”,并找到一种方法将脚本分解成更小的脚本,每个脚本都有一个更明确的目的。

一个需要用默认值预定义40个变量的脚本可能做得太多了,特别是如果您的第一直觉是“继承”的话这是重构它的关键


我尊重坚持std/核心库的冲动。也许您应该在这里考虑一下Unix的理念,即只做一件事,把它做好,然后找到一种方法将脚本分解成更小的脚本,每个脚本都有一个更好的定义用途。

或者使用散列而不是变量,或者使用YAML配置文件,或者编写一个简单的DSL,比如

class Options
  def self.parse
    obj = new
    yield(obj)
    obj.options
  end

  attr_reader :options
  def initialize
    @options = {}
  end

  def set(name, default = nil)
    @options[name] = default
    parse_option(name)
  end

  def parse_option(name)
    # code to parse the option
    # if option present
    #   @options[name] = value
    # end
  end
end

Options.parse do |o|
  o.set :name, "John"
  o.set :age, 15
end
# => { name: "John", age: 15 } or parsed values...

或者使用散列而不是变量,或者使用YAML配置文件,或者编写一个简单的DSL,比如

class Options
  def self.parse
    obj = new
    yield(obj)
    obj.options
  end

  attr_reader :options
  def initialize
    @options = {}
  end

  def set(name, default = nil)
    @options[name] = default
    parse_option(name)
  end

  def parse_option(name)
    # code to parse the option
    # if option present
    #   @options[name] = value
    # end
  end
end

Options.parse do |o|
  o.set :name, "John"
  o.set :age, 15
end
# => { name: "John", age: 15 } or parsed values...

或者使用散列而不是变量,或者使用YAML配置文件,或者编写一个简单的DSL,比如

class Options
  def self.parse
    obj = new
    yield(obj)
    obj.options
  end

  attr_reader :options
  def initialize
    @options = {}
  end

  def set(name, default = nil)
    @options[name] = default
    parse_option(name)
  end

  def parse_option(name)
    # code to parse the option
    # if option present
    #   @options[name] = value
    # end
  end
end

Options.parse do |o|
  o.set :name, "John"
  o.set :age, 15
end
# => { name: "John", age: 15 } or parsed values...

或者使用散列而不是变量,或者使用YAML配置文件,或者编写一个简单的DSL,比如

class Options
  def self.parse
    obj = new
    yield(obj)
    obj.options
  end

  attr_reader :options
  def initialize
    @options = {}
  end

  def set(name, default = nil)
    @options[name] = default
    parse_option(name)
  end

  def parse_option(name)
    # code to parse the option
    # if option present
    #   @options[name] = value
    # end
  end
end

Options.parse do |o|
  o.set :name, "John"
  o.set :age, 15
end
# => { name: "John", age: 15 } or parsed values...

这些变量是什么样的数据类型?我们的整个系统都是用Ruby构建的,并且广泛使用YAML配置文件。我们使用YAML是因为我们可以用其他语言访问数据,从而可以使用相同的路径和设置将应用程序保留在系统之外。它工作得非常好。类型是字符串和布尔值。这些变量是什么数据类型?我们的整个系统都是用Ruby构建的,并且广泛使用YAML配置文件。我们使用YAML是因为我们可以用其他语言访问数据,从而可以使用相同的路径和设置将应用程序保留在系统之外。它工作得非常好。类型是字符串和布尔值。这些变量是什么数据类型?我们的整个系统都是用Ruby构建的,并且广泛使用YAML配置文件。我们使用YAML是因为我们可以用其他语言访问数据,从而可以使用相同的路径和设置将应用程序保留在系统之外。它工作得非常好。类型是字符串和布尔值。这些变量是什么数据类型?我们的整个系统都是用Ruby构建的,并且广泛使用YAML配置文件。我们使用YAML是因为我们可以用其他语言访问数据,从而可以使用相同的路径和设置将应用程序保留在系统之外。它工作得非常好。类型是字符串和布尔。我怀疑它最有可能从5个变量开始,然后逐渐增加。同意。我怀疑它最有可能从5个变量开始,然后逐渐增加。同意。我怀疑它最有可能从5个变量开始,然后逐渐增加。同意。我猜想它最有可能从5个变量开始,然后逐渐增加。