예제를 통한 코틀린 문법의 특성(변수편)

Suyong Lee·2021년 8월 29일
0

Kotlin

목록 보기
4/16
post-thumbnail

코틀린에서는 변수 선언시 타입을 생략하는 경우가 많은데, 여기에 코틀린이 타입 선언을 뒤에 해주게끔 설계된 이유가 있다.

타입으로 변수 선언을 시작하면 타입을 생략할 경우 식과 변수 선언을 구별할 수 없기 때문이다.

var answer: Int
answer = 42

초기화 식이 없다면 변수에 저장될 값에 대해 아무 정보가 없기 때문에 컴파일러가 타입을 추론할 수 없다. 따라서 그런 경우 컴파일러가 오류를 일으켜 타입을 반드시 지정하게끔 한다.

기본적으로는 모든 변수를 val 키워드를 사용해 불변 변수로 선언하고, 나중에 꼭 필요할 때만 var로 변경하라. ( 코틀린 만든 사람이 그렇게 하라고 하니까 그렇게 해야겠다. 정확한 이유는 모르겠다. )

val 참조 자체는 불변일지라도, 그 참조가 가리키는 객체의 내부 값은 변경될 수 있다는 사실을 기억하라.

val languages = arrayListOf("Java") <- 불변 참조를 선언한다.
languages.add("Kotlin") <- 참조가 가리키는 객체 내부를 변경한다.

val이 불변 변수라고 해서 상수처럼 아예 내부값을 바꿀 수 없는 변수가 아니라는 점을 인지하라는 뜻인 것 같다.

var 키워드를 사용하면 변수의 값을 변경할 수 있지만 변수의 타입은 고정돼 바뀌지 않는다.

var answer = 42
answer = "no answer" <- "Error: type mismatch" 컴파일 오류 발생

더 쉽게 문자열 형식 지정 : 문자열 템플릿

fun main(args:Array<String>) {
	val name = if (args.size > 0) args[0] else "Kotlin"
    	println("Hello, $name!")
}

$name 을 문자열 리터럴 이라고 부른다.

식도 {}에 둘러싸서 템플릿 안에 넣을 수 있다.

예 ) ${args[0]}!

템플릿 안에서 변수 이름만 사용하는 경우라도 ${name}처럼 중괄호로 변수명을 감싸는 습관을 들이면 더 좋다. 변수명은 ${}로 둘러싸줘도 상관없고, 식의 경우는 {}로 무조건 둘러싸줘야 하기 때문. 모든 경우에 대처하기 위해서.

profile
이수용

0개의 댓글

관련 채용 정보