ruby - 在 Ruby 中使用选项散列快速设置实例变量?

标签 ruby

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

所以不要这样做:

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

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

最佳答案

def initialize(opts={})
  opts.each { |k,v| instance_variable_set("@#{k}", v) }
end

关于ruby - 在 Ruby 中使用选项散列快速设置实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13303401/

相关文章:

ruby - 使用 aws-sdk ruby​​ gem 了解它自己的实例 ID

ruby-on-rails - Ruby on Rails 高级 JSON 序列化

ruby - Aptana 3 ruby​​ 调试器 - DebugThread 循环中的异常 : undefined method `is_binary_data?'

ruby - 将类方法保存到 txt 中时出现问题

小时字符串数组中的 Ruby 最小值和最大值

ruby-on-rails - 仅使用 Rails pluralize helper 将强样式应用于数字

python - 如何在 Ruby 和 Python 之间传递基本对象?

ruby - 使用纯 ruby 进行 Facebook 聊天

ruby - 如何在 Ruby 中检测数组中的重复值?

mysql - 递归加载层次结构中的所有子/父记录