IMCAT.DEV
로그인 가입
Kotlin 입문 문법

Kotlin 함수 정의 및 호출

Kotlin 함수 정의 및 호출 — 초급

Kotlin 함수 정의 및 호출

1. 도입 (왜 배워야 하는가)

함수는 프로그래밍의 가장 기초적인 구성 요소 중 하나로, 코드의 재사용성을 높이고 가독성을 향상시킵니다. 실무에서는 특정 기능을 반복적으로 사용해야 할 때 중복된 코드를 작성하는 대신 함수를 정의하여 호출함으로써 효율성을 극대화합니다. 예를 들어, 쇼핑몰 애플리케이션에서 결제 처리 로직이 여러 곳에서 필요하다면, 이를 함수로 정의하여 호출하는 것이 유지보수와 관리 측면에서 훨씬 유리합니다.

함수를 사용하지 않으면 코드가 중복되고, 수정할 때 여러 곳을 일일이 변경해야 하므로 실수할 확률이 높아집니다. 이러한 문제는 생산성 저하와 버그 발생의 원인이 될 수 있습니다.

2. 핵심 개념 설명

함수(Function)

함수는 특정 작업을 수행하는 독립적인 코드 블록입니다. 이는 요리사에게 주어진 레시피와 같습니다. 레시피는 특정 재료를 가지고 어떻게 요리를 할지를 설명해 주고, 요리사는 이를 따라 요리를 완성합니다.

인자(Parameters)와 반환값(Return Value)

  • 인자: 함수에 전달되는 입력 값입니다. 마치 요리를 할 때 필요한 재료와 같습니다.
  • 반환값: 함수가 작업을 완료한 후 내보내는 결과입니다. 이는 요리를 완성한 후 나오는 요리와 같습니다.
  • 용어설명
    함수특정 작업을 수행하는 코드 블록
    인자함수에 전달되는 입력 값
    반환값함수가 작업 후 내보내는 결과 값

    3. 기본 코드 예제

    아래는 두 숫자를 더하는 간단한 함수의 예제입니다.

    fun addNumbers(a: Int, b: Int): Int { // addNumbers라는 함수 정의
        return a + b // a와 b를 더한 값을 반환
    }
    
    fun main() {
        val sum = addNumbers(3, 5) // addNumbers 호출
        println("합계: $sum") // 결과 출력
    }

    실행 결과

    합계: 8

    코드 한 줄씩 동작 설명

    1. fun addNumbers(a: Int, b: Int): Int { - addNumbers라는 이름의 함수를 정의하며, 두 개의 정수 인자를 받습니다. 반환값의 타입은 Int입니다.
    2. return a + b - 함수는 인자로 전달된 두 숫자를 더한 값을 반환합니다.
    3. fun main() { - Kotlin의 진입점인 main 함수를 정의합니다.
    4. val sum = addNumbers(3, 5) - addNumbers 함수를 호출하여 3과 5를 더한 결과를 sum 변수에 저장합니다.
    5. println("합계: $sum") - sum 변수의 값을 출력합니다.
    6. 4. 실전 활용 예제

      예제 1: 장바구니에 상품 추가

      쇼핑몰 애플리케이션에서 장바구니에 상품을 추가하는 로직을 함수로 구현할 수 있습니다.

      data class Product(val name: String, val price: Double) // 상품 데이터 클래스 정의
      
      fun addToCart(cart: MutableList<Product>, product: Product) {
          cart.add(product) // 장바구니에 상품 추가
      }
      
      fun main() {
          val cart = mutableListOf<Product>() // 빈 장바구니 생성
          addToCart(cart, Product("티셔츠", 20.0)) // 상품 추가
          println("장바구니: $cart") // 결과 출력
      }

      예제 2: 할인 계산

      할인율을 적용하여 최종 가격을 계산하는 함수입니다.

      fun calculateDiscountedPrice(originalPrice: Double, discountRate: Double): Double {
          return originalPrice * (1 - discountRate) // 할인된 가격 계산
      }
      
      fun main() {
          val price = 100.0
          val discountedPrice = calculateDiscountedPrice(price, 0.2) // 20% 할인 적용
          println("할인된 가격: $discountedPrice") // 결과 출력
      }

      5. 흔한 실수와 주의사항

      실수 1: 잘못된 인자 타입

      fun add(a: Int, b: Int): Int {
          return a + b
      }
      
      // 잘못된 호출
      val result = add("3", 5) // 오류 발생

      올바른 호출

      val result = add(3, 5) // 정수로 호출

      주의: 함수에 정의된 인자 타입과 맞지 않는 값으로 호출하면 컴파일 오류가 발생합니다.

      실수 2: 반환값을 잊는 경우

      fun multiply(a: Int, b: Int) {
          return a * b // 오류 발생
      }

      올바른 코드

      fun multiply(a: Int, b: Int): Int {
          return a * b // 반환 타입을 명시해야 함
      }

      주의: 반환값이 있는 함수는 반드시 반환 타입을 명시해야 합니다.

      6. 정리

    7. 함수는 코드의 재사용성을 높이고 가독성을 향상시킵니다.
    8. 인자와 반환값은 함수의 입력과 출력을 정의합니다.
    9. 실무에서 자주 사용되는 패턴으로는 장바구니 추가, 가격 계산 등이 있습니다.
    10. 함수 호출 시 인자 타입을 반드시 확인해야 하며, 반환값을 명시하는 것을 잊지 말아야 합니다.
    11. 다음에 학습하면 좋은 주제

    12. 클래스와 객체 지향 프로그래밍
    13. 고차 함수와 람다 표현식
    14. 예외 처리와 오류 관리