본문 바로가기
Kotlin

[Kotlin in Action] 2.1 기본 요소: 함수와 변수

by Nhahan 2025. 3. 14.

2.1.1 Hello, World!

fun main(args: Array<String>) {
    println("Hello, world!")
}

 

2.1.2 함수

함수의 기본 구조(블록이 본문인 함수)

식이 본문인 함수

fun max(a: Int, b: Int): Int = if (a > b) a else b

 

반환 타입을 생략하면 max 함수를 더 간략하게 만들 수 있다. (타입 추론)

fun max(a: Int, b: Int) = if (a > b) a else b

 

2.1.3 변수

val hello = "hello"
val answer = 42
val answer: Int = 42 // 타입 표기를 원한다면 명시해도 된다.

 

초기화 식을 사용하지 않고 변수를 선언하려면 변수 타입을 반드시 명시해야한다.

val answer: Int
answer = 42

 

변경 가능한 변수와 변경 불가능한 변수

val - 변경 불가능한 참조를 저장하는 변수다. (자바의 final)

var - 변경 가능한 참조다.

기본적으로는 모든 변수를 val 키워드를 사용해 불변 변수로 선언하고, 나중에 꼭 필요할 때에만 var로 변경하자. 변경 불가능한 참조와 변경 불가능한 객체를 부수 효과가 없는 함수와 조합해 사용하면 코드가 함수형 코드에 가까워진다.

 

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

 

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

fun main(args: Array<String>) {
    val name = if (args.size > 0) args[0] else "Kotlin"
    println("Hello, $name!")
}
한글을 문자열 템플릿에서 사용할 경우 주의할 점
코틀린에서는 변수 이름에 한글이 들어갈 수 있다. 유니코드 변수 이름으로 인해 문자열 템플릿을 볼 때 오해가 생길 수 있다. $변수명 뒤에 한글을 붙여서 사용하면 코틀린 컴파일러는 영문자와 한글을 한꺼번에 식별자로 인식해서 unresolved reference 오류를 발생시킨다.
// println(“안녕하세요 $name님 반갑습니다.”)
해결 방법은 중괄호로 한 번 감싸주는 것. $(name)처럼 중괄호로 감싸주는 습관을 기르도록 하자.

댓글