对于 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 做什么感到惊讶。
最佳答案
splat (*) 和 double splatt (**) 运算符允许方法采用任意数量的参数。前者将参数存储在数组中,后者将它们存储在哈希中。
还有 options hash,它是一个可选的哈希参数,通常作为方法声明中的最后一个参数包含在内。它还可以接受任意数量的参数(实际上,它们是普通的哈希项)。
但是,在上述两种情况下,当您声明方法时,参数的数量是未知的。因此,您不能将未知数量的参数设置为“必需”。
有关 splat、double splat 和所需关键字参数的更多信息,请访问 this blog post。 .
关于Ruby 需要关键字参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38611058/