Kotlin in Action 2챕터-변수
2챕터 세션1- 함수 바로가기
변수
자바에서는 맨 앞에 타입을 놓지만, 코틀린의 경우 타입 생략이 가능하기 때문에 val/var
키워드를 맨 앞에 놓게 된다.
만약 타입이 먼저 올 경우 타입 생략이 잦은 코틀린의 특성상 식과 변수의 선언을 구분하지 못하게 될 수도 있기 때문이다.
참고로 초기화 식을 사용하지 않고 변수를 선언하려면 반드시 변수의 타입을 명시하여야 한다.
변수 선언 시 사용 키워드
모든 변수를 val(불변변수)로 선언하고, 필요시에만 var로 변경하는 것이 좋다.
val
◼값을 뜻하는 value에서 따왔는데 변경 불가능한 참조를 저장하는 변수이다.
일단 초기화 하고 나면 재대입이 불가능하며, 자바에서는 final이 val의 역할을 해준다.
val의 이점
◼테스트 용이
코드의 일관성을 유지하고 예상한 값으로 초기화 되기 떄문에 테스트 케이스 작성이 쉬워진다.
◼안전성 및 예측가능성
한번 초기화되면 값을 변경할 수 없기 때문에 예기치못한 상태 변화로부터 코드를 보호할 수 있다.
◼함수형 코드와 가까워짐
함수형 프로그래밍
에서 강조하는 특징 중 하나가 불변성이다.
val은 변수가 한번 초기화 되면 값을 변경할 수 없기 때문에 함수형 프로그래밍이 지향하는 철학과 가까워지게 된다.
val의 특이점
val은 참조 자체가 불변이지만, 그 참조가 가리키는 객체 내부의 값은 변경가능하다.
예를 들어 val이 arrayListOf타입이라면 이 arrayList의 내부를 변경하는 .add
는 사용가능하다.
var
변경가능한 참조이다.
이러한 변수의 값은 언제든 변경 가능하며, 자바에서는 일반변수가 var의 역할을 한다.
var 사용시 유의점
var을 사용시 변수의 값
은 변경 가능하지만, 변수의 타입
은 고정되어 변경할 수 없다.
예를 들어 var ans=42
라고 선언했으면, 컴파일러는 Int타입을 기대하기 때문에 ans"question"
이라고 변경하려고하면 컴파일 오류가 발생하게 된다.
컴파일러는 변수의 선언 시점의 초기화식으로 변수의 타입을 추로하기 때문에, 다른 타입의 값을 저장하고 싶다면 변환 함수를 써서 변수의 타입으로 변경하거나 값을 변수에 대입할 수 있는 타입으로 강제 형 변환 해야한다.
문자열 템플릿
$ 변수명
으로 사용 가능하며, 자바의 문자열 접합 연산과 동일한 기능을 보다 간결하게 지원한다.
변수명 바로 뒤에 한글을 붙여 사용하면 식별자를 잘못 인식하여 unresolved
오류가 발생하기 때문에 변수 명을 ` {}로 감싸서 사용한다.<br>
만일
$`문자를 문자열에 넣고 싶다면, 백슬래시를 사용하여 $를 이케이프 시키면 된다.
복잡한 문자열 템플릿
위에서는 $ 변수명
으로 사용한다고 했지만, 복잡한 식도 중괄호로 감싸서 문자열 템플릿 안에 넣을 수 있다.
fun main() {
val x = 10
val y = 5
// 문자열 템플릿을 사용하여 식 출력
val resultString = "$x + $y = ${x + y}"
// 결과 출력
println("결과: $resultString")
}
자세히 보면 문자열 템플릿 안에 x+y
라는 식이 들어가있는 것을 확인할 수 있다.
또한 배열의 특정 인덱스를 출력하기 위해서 ${배열이름[index]}
를 사용하는 것도 가능하다.
댓글남기기