4

본질적으로 변경할 수있는 클래스가 있지만 "영구적 인"작업을 허용합니다.지속적인 작업을 허용하는 비 영구적 인 데이터 구조는 무엇이라고 부릅니까?

# create an object with y equal to 3 and z equal to "foobar" 
x = MyDataStructure(y = 3, z = "foobar") 
x.y = 4 

그러나, 이런 식으로 일을하는 대신에, 대신 다음 복사본을 만들어 방법 중 몇이 그것을 변이가있다 :

예를 들어, 나는 (파이썬)이 같은 개체를 변이 수
x = MyDataStructure(y=3, z="foobar") 
# a is just like x, but with y equal to 4. 
a = x.using(y = 4) 

다른 값으로 x를 복제하고 있습니다. 분명히, 이것은 부분적으로 지속되는 정의를 wikipedia에 부합하지 않습니다.

그래서이 클래스를 어떻게 부르겠습니까? QuasiPersistentObject? PersistableObject? SortOfPersistentObject? 더 나은 아직, 이것에 대한 기술적 이름이 있습니까?

+0

용어를 지속적으로 사용하고 (다시 시작할 때까지 유지) 음소거 할 수 있습니까 (값을 수정할 수 있습니까)? 이것들은 매우 다르며 질문에서 상호 교환 적으로 사용되는 것처럼 보입니다. – TheJacobTaylor

+0

예, 영구적이라고하는 것은 실제로 변경할 수없는 것입니다. http://en.wikipedia.org/wiki/Immutable_object – haffax

+1

@haffax : 영구 데이터 구조는 기본적으로 변경 불가능하지만 불변의 데이터 구조와 영구 데이터 구조는 완전히 동일하지 않습니다. 내 질문에 위키 백과 링크를 참조하십시오. –

답변

2

나는 이런 종류의 데이터를 라고 부릅니다.은 지속 가능하지만 단어가 확실하지는 않습니다. .

+0

그건 내 마음에 들어온 첫 단어 야.하지만 나에게도 약간의 느낌이 들었다. :-) –

+0

Persistable은 브라우저의 사전에서 무엇을 말하는지에 상관없이 완전히 맹렬한 단어입니다. 그것은 cromulent뿐만 아니라 꽤 performant입니다. 내 사전은 그냥 embiggened해야합니다 ... – ifatree

2

최적화 된 복사본 일 뿐이므로이를 반영하기 위해 작업의 이름을 변경하고 싶습니다.

a = x.copy_with(y=4) 
+1

datetime 표준 라이브러리 모듈의 형식이이 개념을 표현하는 방식을 좋아합니다 - 그들은 메서드의 이름을'replace'로 지정합니다 (당연히 불변 타입이기 때문에 명확해야합니다. 그들은 원본을 돌연변이시키기보다는 조정 된 복사본을 반환합니다 ;-). –

+0

그건 다른 방법이에요. 저는 유창한 인터페이스를 갖기 위해 의도 된 종류가있었습니다. 영어와 같이 읽습니다 : "x는 y를 4로 사용합니다". –