Ruby 需要关键字参数

标签 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 做什么感到惊讶。

最佳答案

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

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

但是,在上述两种情况下,当您声明方法时,参数的数量是未知的。因此,您不能将未知数量的参数设置为“必需”。

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

关于Ruby 需要关键字参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38611058/

相关文章:

ruby - Sinatra - 如何获取服务器的域名

ruby - RethinkDB 单个请求中的多个查询

ruby - chruby:如何使用系统默认的ruby?

ruby - 模块同时扩展和包含?

python - 将 argparse 与采用 **kwargs 参数的函数一起使用

Ruby Singleton 避免使用实例成员

python - 设置类组成对象的属性的功能

Python wordcloud 颜色按词频

python - 管理重复的关键字参数

python - 如何将 **kwargs 复制到自己?