나는 NextMethod()
이 어떻게 작동하는지 알아 내려고하고있다. S3 클래스 시스템에 대해 가장 자세한 설명은 Chambers & Hastie (edts.)의 통계 모델 S (1993, Chapman & Hall)에 나와 있지만, NextMethod
호출에 관한 부분은 약간 애매합니다. 다음은 내가 이해하고자하는 관련 단락들입니다 (268-269 쪽). 그들은 특별한 호출로 이전 방법에서 호출 된 것처럼 NextMethod()
에 호출의 결과로 호출 방법에 돌아 가면`NextMethod()의 내부 동작
, 이러한 동작합니다. 상속 된 메서드에 대한 호출의 인수는 현재 메서드 호출에서 숫자, 순서 및 실제 인수 의 이름과 동일합니다 (따라서 generic에 대한 호출은 입니다). 그러나 인수의 표현식은 이며 현재 메소드의 해당 형식 인수의 이름입니다. 예를 들어, 표현식
print(ratings)
에 이 있다고 가정하면print.ordered()
메서드가 호출됩니다. 이 방법NextMethod()
를 호출 할 때, 이것은이x
print.ordered()
의 프레임에서 여기x
이다 의print.factor()
호출 형태print.factor(x)
, 동일하다. 여러 인수가 형식 인수 "...
"과 일치하면 해당 인수는 상속 된 메서드 y 특수 이름 "..1
", "..2
"등의 호출에서 나타납니다. 평가자는 을 인식하고 적절하게 처리합니다 예 : 의 경우 476이 오히려 미묘한 정의는 함수의 의미가 방법의 사용으로 깨끗하게 가능한을 통해 S 캐리의 호출을 보장하기 위해 존재한다 (비교 베커, 챔버와 윌크스의 새로운 S 언어, 페이지 354) . 특히 :
- 인수는
NextMethod()
이 호출 될 때 현재 값을 사용하여 현재 메소드에서 상속 된 메소드로 전달됩니다.- 지연 평가가 계속 적용됩니다. 평가되지 않은 주장은 평가 절하로 남아 있습니다.
- 상속 된 메서드에서 누락 된 인수가 누락 된 채로 있습니다.
- 인수가 에서으로 전달되면 "
...
"정규 인수가 올바른 인수 이름으로 도착합니다. 호출에 실제 인수에 해당하지 않는 프레임에서- 객체는 상속 된 메서드에 전달되지 않습니다. "
상속 과정은 지금까지 인수 가서 기본적으로 투명합니다.
- "현재의 방법은"무엇이며 "이전의 방법은"무엇을 : 나는 혼란을 찾을
두 포인트는?
- "상속 된 메서드 호출의 인수", "인수의 식"및 "현재 메서드의 해당 형식 인수의 이름"의 차이점은 무엇입니까?
일반적으로 누군가 위의 단락에서 주어진 설명을 루시퍼 방식으로 다시 말하면 좋을 것입니다.