裸星号作为方法定义中的参数:def f(*)

pil*_*row 22 ruby parameters

我知道这意味着什么:

def f(*args)
  ...
end
Run Code Online (Sandbox Code Playgroud)

但是这意味着什么,为什么要使用它呢?它也可以出现在命名参数中吗?

def f(*)
  ...
end
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 38

def f(*)具有相同的效果def f(*args),除了它没有命名globbed参数数组.如果你希望函数接受任意数量的参数但实际上不需要在函数中引用它们,你可以使用它 - 例如,如果你重写一个方法但是调用super而不传递一个显式的参数列表,结果在传递给的原始参数中super.

你也可以写def f(a, b, *).

  • 我所看到的"正式"记录的唯一地方是相关的[RubySpec](https://github.com/rubyspec/rubyspec/blob/master/language/def_spec.rb#L35). (6认同)
  • 另外:https://github.com/ruby/spec/blob/master/language/def_spec.rb#L83 (2认同)