함수와 변수

1. Hello World

코틀린에서 기본적으로 실행할 수 있는 프로그램을 작성해보자.

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

코틀린 문법의 주요 특성은 다음과 같다:

  • fun 키워드를 사용하여 함수를 선언한다.
  • 파라미터의 이름 뒤에 타입을 명시한다. (변수 선언 시에도 동일함)
  • var num: Int = 3
  • 함수를 최상위 수준에서 정의할 수 있으며, 반드시 클래스 안에 넣을 필요가 없다.
  • 코틀린 표준 라이브러리는 여러 자바 표준 라이브러리 함수를 감싼 wrapper를 제공한다.
  • ;(세미콜론)을 붙이지 않아도 된다.

2. 함수

코틀린에서 함수는 fun 키워드를 사용하여 선언하며, 반환 타입은 파라미터 목록 닫는 괄호 뒤에 콜론(:) 으로 구분하여 명시한다.

함수의 기본 구조

fun max(a: Int, b: Int): Int {
    return if (a > b) a else b
}

식이 본문인 함수

  • 함수 본문이 단일 식(statement)일 경우, 중괄호 없이 =(등호)로 정의할 수 있다.
  • 식(expression)과 문(statement)
    • 식(expression) : 값을 반환하며, 다른 식의 하위 요소로 사용될 수 있음.
    • 문(statement) : 블록의 최상위 요소로 존재하며, 별도의 값을 반환하지 않음.
fun max(a: Int, b: Int): Int = if (a > b) a else b
  • if, when, try 등 더 복잡한 식을 사용할 수도 있다.
  • 반환 타입을 생략할 수도 있음 (컴파일러가 타입을 추론함).
fun max(a: Int, b: Int) = if (a > b) a else b

블록이 본문인 함수

  • 본문이 중괄호 {} 로 둘러싸여 있는 경우, 반환 타입을 반드시 명시해야 한다.
  • 타입 추론이 불가능하기 때문.
fun sum(a: Int, b: Int): Int {
    return a + b
}

3. 변수

코틀린에서 변수를 선언하는 방법:

val question = "What?"
val answer = 42
val qna: Int = 24
  • 변수 타입 : 타입을 명시하지 않아도 되지만, 명시하지 않으면 컴파일러가 추론함.
  • 부동소수점 타입 : Double 타입으로 처리됨.
  • 초기화 없이 변수를 선언하려면 반드시 타입을 명시해야 한다.

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

val (Value - 불변 변수)

  • 변경 불가능한 참조를 저장하는 변수.
  • 초기화 이후 재대입 불가능.
  • Java의 final 변수와 유사함.
  • 단, 참조 자체는 불변이지만 참조가 가리키는 객체 내부의 값은 변경될 수 있음.
val languages = arrayListOf("Java")
languages.add("Kotlin") // 리스트 내부 값 변경 가능

var (Variable - 가변 변수)

  • 변경 가능한 참조를 저장하는 변수.
  • Java의 일반 변수와 유사.
  • 변수의 값은 변경 가능하지만, 변수 타입은 고정됨.
var count = 10
count = 20 // 가능

4. 문자열 템플릿

코틀린은 문자열 템플릿을 제공하여 문자열 내에서 변수를 간편하게 사용할 수 있다.

  • $변수명 또는 ${표현식} 형식으로 문자열에 변수를 삽입 가능.
  • 존재하지 않는 변수를 사용하면 컴파일 오류 발생.
fun main(args: Array<String>) {
    if (args.isNotEmpty()) {
        println("Hello, ${args[0]}!")
    }
    
    println("Hello, ${if (args.isNotEmpty()) args[0] else "someone"}!")
}


참고

  • 드미트리 제메로프,스베트라나 이사코바, Kotlin in Action (에이콘출판, 2017)

+ Recent posts