생성자에서 validity 메서드를 호출하여 S4 개체를 작성하려고합니다. 나는 내가 나이가 12이 동일 싶습니다 물론S4 생성자 초기화 및 프로토 타입
new("Person", Age = 12)
#Error in if ([email protected] < 0) return("Age cannot be negative") :
#argument is of length zero
장난감의 예이다 얻을 수 있기 때문에
setClass("Person", slot = c(Age = "numeric"))
validityPerson<-function(object){
if([email protected] < 0)return("Age cannot be negative")
TRUE
}
setValidity("Person", validityPerson)
setMethod("initialize","Person", function(.Object,...){
validObject(.Object)
.Object
})
이 코드는 문제가있다,하지만 난이 가질 수있는 방법을 이해하는 것을 시도하고있다 잠재적으로 모든 종류의 다른 초기화를 수행 할 수있는 메소드를 초기화 한 다음 유효한지 검사하십시오.
지적 용 Thx. 현재 작동하고 있지만, 나는 아직도이 라인을 얻지 못한다. 난 callNextMethod() '상속이 관련된 경우에만 필요한 것이라고 생각했다. 그런데 내가 왜 이걸 필요로합니까? –
'callnextMethod()'를 호출하지 않으면 initialize 함수에 전달 된 모든 매개 변수를 취하여 슬롯에 할당해야합니다. 함수가'Age ='매개 변수를 포착하기 위해'... '을 갖도록 정의했지만 아무 것도하지 않습니다. 이 경우'callNextMethod'는'...'을 사용하여 슬롯을 할당 해줍니다. – MrFlick
의미가 있습니다. 설명 해줘서 고마워. –