불변 값의 변경 연산은 원본을 보존하고 새 값을 반환한다

setter처럼 보이는 이름으로 새 객체를 만들면 호출자가 반환값을 버릴 수 있습니다.

  1. 1

    original value

    state A

  2. 2

    withChange

    검증된 변경

  3. 3

    copy fields

    불변 부분 공유

  4. 4

    new value

    state B

  5. 5

    original

    state A 유지

핵심: with·plus 같은 이름과 구조 공유 정책으로 새 값 생성임을 드러냅니다.