"포괄적 인 루비 프로그래밍 과정" 전자 북 하위 클래스 메소드가 부모 메소드를 확장 할 때가 있습니다. 나는 그것이 어떻게 작동하는지 완전히 인식하지 오전 :스 플랫을 사용하여 수퍼를 사용하는 루비 확장 메소드
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
은 부모에가 무엇 이건 방법을 확장 지시, 왜 이러한 플랫 인수가 필요? 매개 변수 목록에서
해결책을 시도 했습니까? splat args가 필요한 이유를 정확하게 알려주는 오류가 발생합니다. – meagar