운기의 블로그
코틀린 - mutable / immutable collection으로 나뉘어진 이유 본문
코틀린에서 collection을 mutable / immutable 인터페이스를 제공하는 이유에 대해 말하기전에
함수형 프로그래밍의 특징인 불변성에 대해서 이야기해보려고 한다.
1. 함수형 프로그래밍 - 불변성
코틀린은 함수형 프로그래밍을 지원한다고 이전 포스팅에서 언급했다.
함수형 프로그래밍의 중요한 특징인 불변성에 대해서 알아보자
불변성이란?
- 변하지 아니하는 성질
- 공간 좌표의 반전, 시간 반전, 회전, 로런츠 변환 따위의 특정한 변환이나 연산으로도 변화하지 않는다고 하는, 물리량이나 물리 법칙이 갖는 성질
정리해 보자면 이전의 상태를 그대로 유지하는 성질 또는 상태를 변경하지 않는 것을 말한다.
프로그래밍 관점에서 보자면
"메모리에 할당된 값을 바꾸지 않는 것을 의미한다"
2. Collection
메모리에 할당된값을 바꾸지 않는다의 의미를 좀 더 알아보자.
프로그래밍에는 값에 의한 호출과 주소에 의한 호출 두가지로 나누어진다.
값에 의한 호출은 Integer, String과 같은 원시자료형을 사용,
주소에 의한 호출은 List, set, map과 같은 Collection 타입을 사용하는 경우이다.
여기서 주의해야할 경우는 주소에 의한 호출인데
주소에 의한 호출은 메모리에 할당된 값을 바꾸기 때문이다.
그렇기에 코틀린에서는 불변성을 유지하기 위해 Collection을 2가지 타입으로 분리해둔것이다.
그렇기에 외부에서 값을 변경하는걸 막기위해 List, set, map을 사용하는것이고
변경을 해야하는 경우가 있을때는 MutableList, MutableSet, MutableMap을 사용하면 된다.
'코틀린' 카테고리의 다른 글
코틀린 - Collection (0) | 2022.03.24 |
---|---|
코틀린 - 코틀린의 함수는 1급 함수이다 !?! (0) | 2022.03.23 |
코틀린 - when (0) | 2022.03.22 |