R에서 새 클래스를 만드는 데 장점이나 단점을 찾기 위해 공개 질문을 게시하고 있습니다. R, S3, S4, R5 클래스를 만들 때 기본적으로 사용되는 4 가지 패러다임이 있습니다. 또는 RC) 및 R6.R : S3, S4, R5 (RC) 또는 R6에 클래스 만들기?
S3는 R의 핵심 라이브러리의 대부분을 사용하며 일반 메소드 전달을 사용하여 간단하고 가볍게 구조화 된 패턴을 고수하는 것이 유리할 것으로 보입니다. 캡슐화, 메소드 정의 등과 같이 나에게 명확하지 않은 다른 이유로 이것을 사용하지 않기를 바란다. 예를 들어, 클래스를 구조화 할 때 일반 메소드가 클래스 및 그 자연의 것들.
S4는 그다지 뛰어나지는 않지만, 분명히 발생할 수있는 분명한 실수를하기 위해 유형 관련 안전에 대한 형편없는 개념이 있습니다. 그러나 나는 여전히 S4 클래스가 캡슐화와 같은 것들에 대해 확신 할 수 없다는 의미에서 유지하기가 어렵다고 느낀다. 나를 혼란스럽게하는 또 다른 이유는 네임 스페이스의 개념이 거의 없다는 것입니다.
R5는 메소드의 정의가 함수를 디스패치하는 것이 아니라 클래스에 바인딩되어있는 익숙한 것과 비슷합니다. 여기에는 익숙해 진 클래스의 관점에서 객체를 구성하는 것에 관한 약간의 생각이 있습니다. 한 가지 단점은 R5도 S4를 기반으로 구축된다는 것입니다.
R6은 개인 및 공개 기능 및 속성과 같이 OOP 기능을 더 많이 추가 한 개인에 의해 R5가 다시 작성된 것처럼 보입니다.하지만이 정보에 대한 정보가 없기 때문에이 클래스에 대한 지원을 거의 찾을 수 없습니다. Google 검색을 통해 스파 스가 될 수 있습니다. 당신이 말할 수
, 나는 R의 OO 개념과 사투를 벌인거야 내가 일반적으로 OOP와 관련된 다음과 같은 측면을 알아낼 수 없습니다
- 유형 안전/유형 을
- 방법은/etc 바인딩, 캡슐화, 멤버 변수, 객체,
- 의 네임 및 조직 코드 상속의
- 버전.
내가 좋아하는 수업 시스템이 R 커뮤니티에 무엇인지 설명 할 수있는 답변을 제공 할 수 있는지 그리고 수업을 언제 사용하는지 가장 잘 생각하는 방법에 대해 궁금합니다.
왜 "고급"의견 질문에 답변을하고 upvoted하지만 기본 의견 질문은 플래그가 지정되고, 타르 럽고, 페더 링됩니까? Google을 사용하고, rdev에게 물어보고, 색깔있는 책 등을 읽으십시오. – rawr
또한 proto와 R.oo가 있습니다. 어쨌든 추상적 인 대답은 그다지 유용하지 않을 것 같습니다. 작지만 실제와 비슷한 구체적인 문제를 풀어 각 클래스 유형을 사용하여 작성하고 가장 편한 것을 확인하십시오. 그렇게하지 않으려는 경우 현명한 결정을 내릴 수있는 근거가 없으므로 S3를 사용하십시오. 가장 널리 사용되며 실제로 잘못 처리 할 수 없기 때문입니다. –
이 질문은 끝났습니다. 여기에 답을 드리겠습니다. S3과 R6을 적절하게 사용하십시오. RC를 사용하지 마십시오 (R6에 의해 대체되었습니다). S4를 사용하지 마십시오. 가치가있는 것보다 더 번거롭고 기능 프로그래밍이나 OOP를 잘하지 못합니다 (예외적으로 multimethod에 대한 지원은 있지만 거의 필요하지 않습니다). –