코틀린

함수와 변수

누룽지맛치킨 2023. 1. 25. 15:46

함수로 보는 코틀린

fun main(args: Array<String>){
    priintln("Hello, world!")
}
  • 발견할 수 있는 특징
    • 함수를 선언할 때 → fun키워드 사용
    • 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다.
    • 함수를 최상위 수준에 정의 가능
      • 꼭 클래스 안에 함수를 넣어야 할 필요 X
    • 배열도 일반적인 클래스와 동일
      • 코틀린에서는 자바와 달리 배열 처리를 위한 문법이 따로 존재 X
    • 표준 출력 : println사용
      • 코틀린 표준 라이브러리는 여러 가지 표준 자바 라이브러리 함수를 간결하게 사용가능하게 해주는 wrapper제공
    • 세미콜론을 붙이지 않아도 된다.

함수

fun max(a: Int, b: Int) : Int {
    return if (a > b) a else b
}
  • 함수 선언은 fun키워드로 시작
  • 그 다음 함수 이름 사용
  • 함수 이름 뒤에는 괄호와 그 안에 파라미터 목록
  • 함수의 반환 타입은 괄호 다음
    • 괄호와 반환 타입 사이틀 콜론으로 구분

✨문과 식의 구분

    • 값을 만들어 내며 다른 식의 하위 요소로 계산에 참여 가능
    • 자신을 둘러싸고 있는 가장 안쪽 블록의 최상위 요소
  • 코틀린에서는 루프를 제외한 대부분의 제어 구조가 식
  • 반면, 대입문은 코틀린에서 문으로 변경됨

식이 본문인 함수

fun max(a: Int, b: Int) : Int = if (a > b) a else b
  • 함수의 반환 타입도 생략 가능
  • 식이 본문인 함수인 경우 컴파일러가 함수 본문 식을 분석
    • 식의 결과 타입을 함수 반환 타입으로 정해줌
    • 이것이 바로 타입추론!!!

변수

  • 변수 선언은 정적 선언이다.
  • 하지만 타입추론이 있기 때문에 타입 선언을 생략가능
  • 타입 명시는 변수 뒤에 콜론을 넣고 선언한다.

변경 가능 vs 변경 불가능

  • val → 변경 불가능한 참조를 저장하는 변수
    • 초기화 후에 재대입이 불가능
    • 자바 기준 final 변수
  • var → 변경 가능한 참조
    • 변수의 값은 계속 바뀔 수 있음
    • 자바 기준 일반 변수
  • 기본적으로 모든 변수를 val 키워드를 사용해 불변 변수로 선언하고 나중에 꼭 필요할 때에만 var로 변경
  • val 참조 자체는 불변이지만 그 참조가 가리키는 객체 내부 값은 변경 가능!!!
  • var 키워드를 사용하면 변수의 값을 변경할 수 있지만 변수의 타입은 고정!!

문자열 템플릿

fun main(args: Array<String>){
    val name = if (args.size > 0) args[0] else "Kotlin"
    println("Hello, $name!")
}
  • 문자열 템플릿
    • 변수를 문자열 안에 사용 가능하도록 하는 기능
    • 문자열 리터럴이 필요한 곳에 변수를 넣고 변수 앞에 $를 추가
    • 복잡한 식을 문자열 템플릿으로 이용하고 싶으면 중괄호로 묶어주면 된다.

✨ 문자열 템플릿 뒤에 바로 한글을 지정할 경우 unresolved reference 가능성이 있다.

  • 일반 변수를 문자열 템플릿안에 사용하더라도 중괄호 안에 넣는 것을 습관화하자!

😃 성찰

  • 기초의 중요성
    • 변수, 함수는 모든 언어에서 기본중의 기본이기 때문에 굳이 공부해야겠다는 인식을 못함
    • 이번 기회에 공부를 해보니 식과 문의 차이와 코틀린이라는 언어에서는 이들이 어떻게 적용되는지를 알게 되었음
    • 안드로이드 개발 시 제어문을 항상 자바와 같이 사용하고 안드로이드 스튜디오에서 추천하는 구조를 매우 불편하게 여겼는데 이해할 수 있는 좋은 기회가 되었다.

 

참조

KOTLIN IN ACTION