是否可以使用哈希键作为ruby方法中的第一级变量?

时间:2016-01-27 15:39:35

标签: ruby ruby-on-rails-4

我会尝试更多地解释一下自己

# Lets say I have this hash
options = {a: 1, b: 2}

# and here I'm calling the method
some_method(options)

def some_method(options)
  # now instead of using options[:a] I'd like to simply use a.
  options.delete_nesting_and_create_vars
  a + b # :a + :b also good.

谢谢!

2 个答案:

答案 0 :(得分:4)

是否可以使用Ruby2 splat参数:

options = {a: 1, b: 2}

def some_method1(a:, b:)
  a + b
end

或:

def some_method2(**options)
  options[:a] + options[:b]
end


some_method1 **options
#⇒ 3
some_method2 **options
#⇒ 3

答案 1 :(得分:2)

如果您的选项已修复,例如只有:a:b是唯一的键,您可以编写如下方法:

def some_method(a:, b:)
  a + b
end

options = {a: 1, b: 2}

some_method(options) #=> 3