Kotlin immutable

    Kotlin의 val은 왜 엄밀한 의미의 불변 변수가 아닌가?

    Kotlin에서는 var을 읽기와 쓰기가 모두 가능한 가변 변수로 val을 읽기만 가능하면 불변 변수로 정의한다. 하지만, 실제로는 var은 물론 val 또한 엄밀한 의미의 불변이 아니다. 지금부터 이유를 알아보도록 하자. 변수에 값을 할당하는 것은 정확히 말하면 메모리 공간을 할당하는 것이다. 다음의 코드를 예시로 들어보자. val blogName = "Kotlin World" var date = "2021-10-02" 위의 코드를 실행하면 blogName이라는 변수값이 정해지고 해당 변수값을 참조했을 때 "Kotlin World"가 저장된 메모리 공간을 반환한다. date라는 변수값은 "2021-10-02"가 저장된 메모리 공간을 반환한다. var date = "2021-10-02" date = "2..

    [Kotlin Collection] Kotlin Mutable과 Immutable의 차이는 무엇인가? Mutable Interface의 관점에서 보는 코틀린의 가변성과 불변성

    개요 Kotlin의 Collection은 두가지 타입의 Interface를 제공한다. 한 가지는 변경 불가능(Immutable)한 Interface 이며 다른 하나는 변경 가능(Mutable)한 Interface이다. 더욱 자세히 들어가면 Immutable Interface와 Mutable Interface는 아래 [그림1]과 같은 상속 구조를 가진다. Immutable Interface에서는 값을 변경할 수 있는 함수를 제공하지 않으며, Immutable Interface를 확장하는 Mutable Interface에서 값을 변경하는 메서드를 제공한다. 필요성 Kotlin에서 이렇게 Immutable Interface와 Mutable Interface를 나눈 것은 코드 레벨에서 명확성과 안정성을 제공하기..