인프런에서 제공하고 있는 강의를 보고 정리한 글입니다.
https://www.inflearn.com/course/java-to-kotlin/dashboard
함수 선언 문법
두 정수를 받아 더 큰 정수를 반환하는 예제를 작성할 것이다.
fun max(a: Int, b:Int) : Int {
if (a > b) {
return a
}
return b
}
// 2. 이렇게도 표현할 수 있는데
fun max(a: Int, b:Int) : Int {
return if (a > b) {
a
} else {
b
}
}
// 3. 이렇게 표현도 가능하다. 하나의 결과값이기 때문에, 다음과 같이 표현이 가능한 것
fun max(a: Int, b:Int) : Int =
if ( a > b ) {
a
} else {
b
}
// 4. 둘 다 Int 이므로, Int 반환 타입도 생략 가능. 다 모으기도 가능. 반환 타입이 생략 가능한 것은
// = 을 썼기 때문이다. {} 으로 하려면 Unit 타입이 아니라면, 반환 타입을 써줘야한다.
fun max(a: Int, b: Int) = if (a> b) a else b
default parameter
Java 에서 기본값을 설정해주기 위한, 오버로딩을 따로따로 해줘야한다. 그래서 코틀린에서는 default parameter 라는 것이 생겼다.
// repeat 이 실행될 때 기본으로 3 이랑 true 가 설정된다.
fun repeat(
str: String,
num: Int = 3,
useNewLine: Boolean = true
) {
for (i in 1..num) {
if (useNewLine) {
println(str)
} else {
println(str)
}
}
}
named argument ( parameter )
위 예제에서 repeat 을 호출할건데, num 은 3을 그대로 쓰고 useNewLine 은 false 를 쓰고 싶은 경우.
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)
}
}
}
builder 를 직접 만들지 않고, builder의 장점을 가질 수 있다.
Java 함수를 가져다 쓸 때에는, named argument 를 쓸 수 없다.
같은 타입의 여러 파라미터 받기 (가변인자)
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)
}
}
정리
- body 가 하나의 값으로 간주되는 경우, block 을 없앨 수 있고, block 이 없다면, 반환 타입을 없앨 수도 있다.
- 함수 파라미터에 기본값을 설정해줄 수 있다.
- 함수를 호출할 때, 특정 파라미터를 지정해 넣어줄 수 있다.
- 가변인자에는
vararg
키워드를 사용하며, 가변인자 함수를 배열과 호출할 때는*
을 붙여주어야 한다.
'[ Kotlin ]' 카테고리의 다른 글
코틀린에서 상속을 다루는 방법 - 10강 (1) | 2024.08.28 |
---|---|
코틀린에서 클래스를 다루는 방법 - 9강 (0) | 2024.08.23 |
코틀린에서 코드를 제어하는 방법 - 6강, 7강 (0) | 2024.08.23 |
코틀린에서 코드를 제어하는 방법 - 5강 (0) | 2024.08.22 |
코틀린에서 변수와 타입, 연산자를 다루는 방법 #2 (0) | 2024.08.22 |