자바 개발자를 위한 코틀린 입문 - 8. 코틀린에서 함수를 다루는 방법


자바 개발자를 위한 코틀린 입문 에 강의 내용을 정리한 내용이다.
코틀린에서 함수를 다루는 방법에 대해서 설명한다.

함수 선언 문법

if - else 문은 expression 이기때문에 아래와 같이 함수 선언이 가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
fun max(a: Int, b: Int): Int  {
return if (a > b) {
return a
} else {
return b
}
}

fun max2(a: Int, b: Int): Int =
if (a > b) {
a
} else {
b
}

// type 추론이 가능하기때문에 type 생략 가능
fun max3(a: Int, b: Int) = if (a > b) a else b

default parameter

JAVA에서 Overloading을 하여 parameter 값을 넣어줘야하는데, parameter 값이 없을떄는 default parameter 값이 적용된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
fun main() {
repeat("Hello World")
repeat("Hello World", 2)
repeat("Hello World", 6, false)
}

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

named argument

parameter를 통해서 직접 지정하고, 지정되지 않는 parameter는 기본값을 사용한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
fun main() {
repeat("Hello World", useNewLine = false)
}

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package basic

fun main() {
printAll("A", "B", "C")

val array = arrayOf("A", "B", "C")
printAll(*array) // spread 연산자
}

fun printAll(vararg strings: String) {
for (str in strings) {
println(str)
}
}

소스코드

참조