S4 개체가 항상 인수를 사용하여 만들어 지도록하는 가장 좋은 방법은 무엇입니까? 즉, 기본 생성자를 호출 할 수 없다는 의미입니다.기본 S4 클래스 생성자 비활성화
답변
매개 변수없이 새 ('MyType') 호출을 허용하지 않는 인수로 명시적인 '초기화'메소드를 만드는 것처럼 보일 것입니다. 이것이 내가 찾던 해결책이었던 것 같습니다.
사용자가 new()
을 사용하고 싶지는 않지만 인수/힌트를 지정하고 문서를 제공 할 수있는 기능이라고 생각합니다. 이상적으로 사용자는 'S4 클래스'를 사용하고 있다는 개념이 없으며 다른 함수를 호출 할 수있는 객체를 반환하는 함수 만 호출하면됩니다. 내 선호 접근 방식은
.A = setClass("A", representation=representation(x="numeric"))
A = function(x=numeric(), ...) {
## user-friendly coercion/checks/etc to 'x'
.A(x=x, ...)
}
## accessors and other methods
전용 패키지 NAMESPACE입니다. S4 클래스의 암시 적 요구 사항은 사실 validObject(new("A"))
이 TRUE (예 : from earlier today)로 평가되므로 사용자가 이러한 방식으로 클래스를 생성하는 것을 허용하는 것을 피하는 것이 어렵게 보입니다.
이 스타일의 불행한 것 같아요. R kludges. OO를 (가난한 사람, 해시를 근거로 한) 사람들에게 알려주지 만 사용자로부터 숨기고 사람들이 입력란에 입력이 없다고 생각하게하십시오. 이것은 내가하고 있었던 일입니다. '초기화'를 사용하여 원하는 작업을 수행 할 방법이 없습니까? – rimorob
@rimorob 아니요, new ("A")'가 작동해야하기 때문에'initialize (
- 1. AS3 클래스/기본 클래스 생성자
- 2. 콜링 기본 클래스 생성자
- 3. 클래스 기본 생성자
- 4. 콜링 기본 클래스 생성자
- 5. 기본 클래스 생성자
- 6. 기본 클래스의 생성자 클래스 'C++의 생성자
- 7. 이동 생성자 기본 클래스 이동 생성자
- 8. Extent S4 클래스, 수퍼 클래스의 생성자 사용 방법
- 9. C++ 호출 기본 클래스 생성자
- 10. 클래스 외부의 기본 생성자/소멸자?
- 11. 기본 클래스 생성자 암시 적으로
- 12. S4 클래스 조작
- 13. S4 생성자 초기화 및 프로토 타입
- 14. operator = 및 copy 생성자 비활성화
- 15. 클래스 생성자
- 16. 기본 생성자 및 개인 생성자 차이가있는 클래스가있는 추상 클래스
- 17. C++에서 기본 클래스 생성자 호출
- 18. 기본 클래스 생성자 또는 BeginProcessing에서 초기화 하시겠습니까?
- 19. 기본 및 하위 클래스 생성자 문제
- 20. 검증 C# 기본 클래스 생성자 매개 변수
- 21. C# 일반 기본 클래스, 매개 변수가있는 생성자
- 22. 파생 클래스 명시 적 기본 생성자 호출
- 23. 변환 생성자, 매개 변수로 기본 클래스?
- 24. 두 번째 수준 기본 클래스 생성자 호출
- 25. 기본 및 파생 클래스 생성자 다형성 문제
- 26. 델파이 생성자 및 클래스 생성자
- 27. 기본 생성자
- 28. perl의 기본 생성자 호출
- 29. 클래스 생성자
- 30. 파생 클래스 생성자 인수 유형에 따라 기본 클래스 템플릿 인스턴스화
'항상'의미하는 것이 명확하지 않습니다 (예 :'new()'의 처음 두 줄을 호출 할 수 있음,'initialize()'메소드 사용 안함) 또는 사용 사례가 무엇인지; 사용자는 규칙이나 모범 사례를 피하는 데 아주 창의적인 것처럼 보입니다. –
올바른 구문이 새로운 경우 ('MyClass', a = 'a', b = 'b') 구문 new ('MyClass')가 사용되지 않도록하고 싶습니다. – rimorob