Bis*_*wal 1 ruby ruby-on-rails
我是 ruby 新手,发现了这段代码:
def initialize(*)
# ...
end
Run Code Online (Sandbox Code Playgroud)
参数列表*中的含义是什么?initialize
这意味着它对传递给它的参数不加区别,即您可以根据需要传递任意数量的参数。
它们是“一次性”参数,因为您随后无法访问它们。如果您想随后访问它们,可以使用常见的模式def initialize(*args)并通过 访问数据args。
通常会调用它super来接受来自父类的参数(也许不需要它们)。
例如,根据您的用法:
class MyClass
def initialize(*)
end
end
Run Code Online (Sandbox Code Playgroud)
以下内容将正常工作:
MyClass.new(1, 2, 3, 4, 5, 'etc')
MyClass.new
Run Code Online (Sandbox Code Playgroud)
虽然 Ruby 规范中有介绍,但它基本上没有文档记录:
it "accepts an unnamed '*' argument" do
def foo(*); end;
foo.should == nil
foo(1, 2).should == nil
foo(1, 2, 3, 4, :a, :b, 'c', 'd').should == nil
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
621 次 |
| 最近记录: |