2.1.4 가변 변수
지금까지 살펴본 변수는 불변(immutable) 변수다. 불변 변수는 한번 초기화하면 다시는 값을 대입할 수 없는 변수다. 이는 자바 final 변수와 비슷하다. 불변 변수를 사용하면 함수가 부수 효과를 일으키지 못하고, 함수형 스타일 코드를 장려할 수 있으며, 이로 인해 코드에 대한 추론이 쉬워지기 때문에 가능하면 불변 변수를 많이 사용해야 한다.
하지만 필요한 경우 val 대신 var 키워드를 사용해 가변(mutable) 변수를 정의할 수 있다. 기본적인 문법은 불변 변수의 경우와 같다. 다만 원할 때 변수 값을 얼마든지 바꿀 수 있다는 점이 다르다. 변수 값을 바꿀 때 사용하는 = 연산을 대입(assignment)이라고 부른다. 대입 연산은 불변 변수를 초기화할 때 사용했던 것이다.
var sum = 1 sum = sum + 2 sum = sum + 3
처음 변수에 값을 대입할 때 추론된 변수 타입은 변수가 불변이든 그렇지 않든 계속 유지된다는 점에 주의하자. 잘못된 타입의 값을 대입하면 컴파일 오류가 발생한다.
var sum = 1
sum = "Hello" // Error: assigning String value to Int variable
추가로 코틀린은 복합 대입 연산(augmented assignment)이라는 대입과 +, -, *, /, % 등의 이항(binary) 연산을 조합한 연산도 제공한다.
var result = 3 result *= 10 // result = result * 10 result += 6 // result = result + 6