대부분의 OOP 언어에서 객체는 일반적으로 제한된 예외 세트 (예 : 파이썬의 튜플 및 문자열)로 변경 가능합니다. 대부분의 기능적 언어에서 데이터는 변경할 수 없습니다.
변경 가능한 객체와 변경 불가능한 객체는 모두 장점과 단점의 전체 목록을 제공합니다.
예를 들어 변경 가능하고 변경 불가능한 데이터가있는 (명시 적으로 선언 된) 스칼라와 같은 두 개념을 결혼하려고하는 언어가 있습니다 (잘못되면 스칼라에 대한 나의 지식이 제한적입니다).
내 질문은 : 않습니다 완전한 그것이 OOP의 맥락에서 이해가 created-되면 어떤 객체 - 즉 (! 원문) 불변성은 변이 할 수 있습니까?
그러한 모델의 설계 또는 구현이 있습니까?
기본적으로 (완전한) 불변성과 OOP 반대 또는 직교입니까?
동기 부여 : OOP에서는 일반적 으로 데이터를 조작 하여 기본 정보를 변경 (돌연변이)하여 해당 객체 간의 참조를 유지합니다. 예를 들어 다른 객체를 참조 Person
하는 멤버가있는 클래스의 객체. 아버지의 이름을 변경하면 업데이트 할 필요없이 자식 개체에 즉시 표시됩니다. 불변이기 때문에 아버지와 자녀 모두를 위해 새로운 물건을 만들어야합니다. 그러나 공유 객체, 멀티 스레딩, GIL 등으로 커프가 훨씬 적습니다.father
Person