ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 8강. 코틀린에서 함수를 다루는 방법
    BackEnd/Kotlin 2024. 2. 21. 20:00
    반응형
    1. 함수 선언 문법
    2. default parameter
    3. named argument
    4. 같은 타입의 여러 파라미터 받기 (가변인자)

     

    함수 선언 문법

      다음은 두 정수를 받아 더 큰 정수를 반환하는 Java 코드입니다.

      public int max(int a, int b) {
        if (a > b) {
          return a;
        }
        return b;
      }

     

      Kotlin으로 작성하면 다음과 같습니다.

    fun max(a: Int, b: Int): Int {
        return if (a > b) {
            a
        } else {
            b
        }
    }
    • 접근 지시어, public은 생략 가능합니다.
    • fun: 함수를 의미하는 키워드입니다.
    • max: 함수 이름입니다.
    • (a: Int, b: Int): 함수의 파라미터는 파라미터명: 타입 입니다.
    • : Int: 함수의 반환 타입입니다. (Unit인 경우 생략 가능합니다.)

     

      함수가 하나의 결과값이면 block { } 대신 = 사용이 가능합니다.

    fun max(a: Int, b: Int): Int =
        // if - else는 expression
        if (a > b) {
            a
        } else {
            b
        }

     

      위의 코드는 한 줄로 변경도 가능합니다.

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

     

    default parameter

      default parameter는 파라미터의 기본값을 지정할 때 사용합니다.

     

      다음은 주어진 문자열을 N번 출력하는 Java 코드 입니다.

      public void repeat(String str, int num, boolean useNewLine) {
        for (int i = 1; i <= num; i++) {
          if (useNewLine) {
            System.out.println(str);
          } else {
            System.out.print(str);
          }
        }
      }

     

      useNewLine 이나 num 의 기본 값을 주고 싶은 경우, Java에서는 다음과 같이 오버로딩으로 구현해야 합니다.

      public void repeat(String str, int num) {
        repeat(str, num, true);
      }
    
      public void repeat(String str) {
        repeat(str, 3, true);
      }

     

      Kotlin 에서는 다음과 같이 default parameter를 지정할 수 있습니다. 물론 Kotlin에도 Java와 동일하게 오버로딩 기능은 있습니다.

    fun repeat(
        str: String,
        num: Int = 3,
        useNewLine: Boolean = true
    ) {
        for (i in 1..num) {
            if (useNewLine) {
                println(str)
            } else {
                print(str)
            }
        }
    }

     

    named argument

      named argument는 다음 코드와 같이, 파라미터의 이름을 지정하여 함수를 호출할 때 사용합니다. 파라미터가 많은 함수가 존재할 때 값을 넣어 줄 파라미터는 named argument를 사용하고, 지정되지 않은 파라미터는 기본 값을 사용합니다.

    fun main() {
        repeat("hello", useNewLine = false)
    }

     

      named argument는 builder의 장점을 가집니다. 단, Kotlin에서 Java 함수를 가져다 사용할 때는 named argument를 사용할 수 없습니다.

     

    같은 타입의 여러 파라미터 받기 (가변인자)

      다음은 문자열을 N개 받아 출력하는 Java 코드입니다.

      public static void main(String[] args) {
        String[] array = new String[]{"A", "B", "C"};
        printAll(array);
    
        printAll("A", "B", "C");
      }
    
      public static void printAll(String... strings) {
        for (String str : strings) {
          System.out.println(str);
        }
      }

     

      Kotlin으로 구현하면 다음과 같습니다.

    fun main() {
        printAll("a", "b", "c")
        val array = arrayOf("A", "B", "C")
        printAll(*array)
    }
    
    fun printAll(vararg strings: String) {
        for (str in strings) {
            println(str)
        }
    }

     

    • Kotlin에서 가변인자 파라미터를 만들어 줄 때 ... 대신 vararg을 사용합니다. 
    • Kotlin에서 배열을 가변인자에 넣어줄 때는 별표(*)를 붙여줘야 합니다. 별표(*)는 spread 연산자로 배열 안에 있는 것들을 콤마(,)를 쓰는 것처럼 꺼내주는 역할을 합니다.

     

    감사합니다.

    반응형

    댓글

Designed by Tistory.