Ruby需要关键字参数

时间:2016-07-27 10:58:12

标签: ruby keyword-argument

对于Ruby方法,所需的关键字语法很好

def foo(bar:, baz:)
  :
end

foo(:bar => true, :baz => false) # OK
foo(:bar => true) # missing keyword argument error

可以用某种魔法“扯掉”所需关键词列表吗?即,

required_keywords = [:bar, :baz]
def foo(magic(required_keywords))
  :
end

我不期待,但我常常对Ruby可以说服的事情感到惊讶。

1 个答案:

答案 0 :(得分:0)

splat (*)和 double spla t(**)运算符允许方法采用任意数量的参数。前者将参数存储在数组中,后者将它们存储在哈希中。

还有选项哈希,它是一个可选的哈希参数,通常作为方法声明中的最后一个参数包含在内。它也可以采用任意数量的参数(实际上,它们是普通的哈希项)。

但是,在上述两种情况下,声明方法时参数的数量都是未知的。因此,你不能制作一个未知数量的论点" required"。

有关splat,double splat和所需关键字参数的更多信息,请访问this blog post