使用Ruby中的选项哈希快速设置实例变量?

myd*_*rms 19 ruby

我想使用选项哈希作为Ruby中方法的输入,但有没有办法快速设置所有同名变量(即具有相同的名称)而不是单独设置每个?

所以不要做以下事情:

class Connection
  def initialize(opts={})
    @host     = opts[:host]
    @user     = opts[:user]
    @password = opts[:password]
    @project  = opts[:project]
    # ad nauseum...
Run Code Online (Sandbox Code Playgroud)

是否有一个单行,将散列中的每个传入选项分配给具有相同名称的变量?

Cas*_*per 47

def initialize(opts={})
  opts.each { |k,v| instance_variable_set("@#{k}", v) }
end
Run Code Online (Sandbox Code Playgroud)

  • 将密钥列入白名单是一个很好的补充,设置白名单几秒钟现在可以节省数小时的调试时间,并帮助记录界面作为副作用. (3认同)