Kotlin : 함수

정종욱·2023년 7월 4일
0

Kotlin

목록 보기
8/16
post-thumbnail

함수 선언 문법

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

위 기본적인 함수 형태에서 아래와 같은 수정이 가능하다.

  • if-else 는 expression 이니 return 을 병합
  • 함수가 하나의 결과값이면 block 대신 = 을 이용하여 정의
  • 반환타입이 같기에 코틀린에서 타입추론이 가능하고, 이에 따라 Int 도 생략
  • if-else 를 굳이 밑으로 내리지 않고 위로 올림
  • 중괄호 생략
// kotlin
fun max(a: Int, b: Int) = if (a>b) a else b

결과적으로 위와 같이 한줄로 변경할 수 있다.

👏 TIP : = 이 아닌 block {} 을 사용하는 경우에 
           반환 타입이 Unit 이 아니라면 명시적으로 작성해주어야 한다.

default parameter


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

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

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

코틀린은 자바와 같이 3번의 메서드를 만들 필요가 없이
파라미터에 기본값을 지정할 수 있다.

named argument

코틀린에서는 위 함수에 지정된 파라미터를 모두 넣을 필요가 없다.

repeat(str, useNewLine = false)

위와 같이 parameter 명을 직접 명시해주면 builder 를 쓰는 것 같은 장점을 가질 수 있다. 이를 named argument 라 한다.

👏 TIP : Kotlin 에서 Java 함수를 가져다 사용할 때는 named argument 를 사용할 수 없다.

가변인자

가변인자란 같은 타입의 여러 파라미터를 받는 것을 말한다.


// java
public static void printAll(String... stringList) {
	for (String str: stringList) {
    	System.out.println(str);
    }
}

String[] array = new String[]{"A", "B", "C", ...};
printAll(arrayList);
printAll("A", "B", "C", ...);

자바에서 Type... 를 사용하면 가변인자를 사용하는 것이다.

// kotlin
fun printAll(vararg stringList: String) {
	for (str in stringList) {
    	println(str)
    }
}

val array = arrayOf("A", "B", "C", ...)
printAll(*array)
printAll("A", "B", "C", ...)

코틀린에서는 배열을 가변인자에 넣어줄 때 앞에 * 을 명시해주어야 한다. spread 연산자라고 해서 배열안에 있는 값들을 그냥 , 를 쓰는 것과 같이 변환해준다.

0개의 댓글

관련 채용 정보