我正在查看这段代码:
class Mo
def new(indy, rome = 1)
initialize(indy, rome)
end
def initialize(indy, rome)
...
end
end
Mo.new(2)
我得到这个输出:
test.rb:6:in `initialize': wrong number of arguments (1 for 2) (ArgumentError)
如果我在 new
的定义中添加 rome
的默认值,它会起作用:
class Mo
def new(indy, rome = 1)
initialize(indy, rome)
end
def initialize(indy, rome = 1)
...
end
end
Mo.new(2)
为什么?
最佳答案
因为 Mo.new(2)
调用方法 Mo.new
,它默认调用方法 Mo#initialize
与单个它收到的参数 2
,但是您的 Mo#initialize
需要两个参数。
关于ruby - `initialize` 似乎检查给 `new` 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37794481/