0
在“综合Ruby编程课程”电子书我有一个情况下,当子类方法扩展父母的方法扩展方法具有超强。我并不完全清楚它是如何工作:红宝石 - 使用图示
class Parent
def initialize(foo:, bar:)
@foo = foo
@bar = bar
end
end
class Child < Parent
def initialize(buzz:,**args)
super(**args)
@buzz = buzz
end
end
我不能完全理解为什么我们在这里使用图示 - **args
。 在这里def initialize(buzz:,**args)
我们只是告诉initialize
采取未知数量的键值参数,对不对?但究竟是什么意思super(**args)
。告诉方法从超类方法中获取这些键值参数?为什么不只是这样的:
class Child < Parent
def initialize(buzz:)
super
@buzz = buzz
end
end
毕竟,super
讲述与任何有父扩展方法,那么,为什么这些图示ARGS需要的?
你*尝试*你的解决方案?你会得到一个错误,应该告诉你为什么需要splat参数。 – meagar