在这篇关于模式匹配的有趣博客文章中,有一些代码的方法签名为(*)
class Request < Data.define(:path, :scheme, :format)
def deconstruct_keys(*)
{ path: @path, scheme: @scheme, format: @format }
end
def deconstruct(*)
path.split("/").compact
end
end
Run Code Online (Sandbox Code Playgroud)
这不同于
def a_method(*args)
Run Code Online (Sandbox Code Playgroud)
我在Ruby 文档中找不到任何信息。
这是什么def deconstruct_keys(*)意思?
注意Ruby Weekly上提到了这个问题
当我阅读Rails代码时,我发现了这一点
def save(*)
create_or_update || raise(RecordNotSaved)
end
Run Code Online (Sandbox Code Playgroud)
怎么*办?:O我知道当我们使用它时会发生什么*args,但在这种情况下,它很简单*.
参考https://github.com/rails/rails/blob/master/activerecord/lib/active_record/persistence.rb#L119
我今天在浏览Rails 3 ActiveRecord源代码,并找到了一个方法,其中整个参数列表是单个星号.
def save(*)
Run Code Online (Sandbox Code Playgroud)
我找不到一个很好的描述(虽然我根据我对splat参数的了解有一些想法).
它做了什么,为什么要使用它?
我是 ruby 新手,发现了这段代码:
def initialize(*)
# ...
end
Run Code Online (Sandbox Code Playgroud)
参数列表*中的含义是什么?initialize