-
8강. 코틀린에서 함수를 다루는 방법BackEnd/Kotlin 2024. 2. 21. 20:00반응형
- 함수 선언 문법
- default parameter
- named argument
- 같은 타입의 여러 파라미터 받기 (가변인자)
함수 선언 문법
다음은 두 정수를 받아 더 큰 정수를 반환하는 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 연산자로 배열 안에 있는 것들을 콤마(,)를 쓰는 것처럼 꺼내주는 역할을 합니다.
감사합니다.
반응형'BackEnd > Kotlin' 카테고리의 다른 글
10강. 코틀린에서 상속을 다루는 방법 (0) 2024.03.04 9강. 코틀린에서 클래스를 다루는 방법 (0) 2024.03.03 7강. 코틀린에서 예외를 다루는 방법 (0) 2024.02.07 6강. 코틀린에서 반복문을 다루는 방법 (0) 2024.02.05 5강. 코틀린에서 조건문을 다루는 방법 (1) 2024.02.04