지난 포스팅에서는 코틀린에서 함수를 사용하는 방법에 대해서 알아보았습니다.
2022.05.18 - [쿤즈 Dev/Kotlin] - [Kotlin] 함수의 사용(1): 간단하게 함수 만들고 사용하기
간단하게 함수를 만들고 사용하는 방법을 알아보았으니 함수에 대해서 조금 더 자세하게 알아볼게요.
이번 포스팅에서는 반환값이 없은 함수와 매개변수에 대해서 알아보겠습니다.
반환값이 없는 함수
반환값이 없는 함수는 Unit이라는 키워드를 사용합니다. 하지만 코틀린은 자료형을 추론할 수 있기때문에 생략할 수도 있습니다.
package `03`
// 반환값이 없음을 표현하기 위해 Unit 사용
fun printlnSum(a: Int, b: Int): Unit = println("${a+b}")
// Unit을 사용하지 않아 자료형 추론
fun printlnSub(a: Int, b: Int) = println("${a-b}")
fun main(args: Array<String>) {
printlnSum(10, 3)
printlnSub(10, 3)
}
Unit이라는 자료형은 Java에서 void와 비슷합니다. 반환값이 없다는 것을 의미합니다. Unit 자료형을 생략하고 반환값이 없다면 자동으로 Unit으로 추론됩니다. void는 자바에서 아무것도 없음을 의미하지만 코틀린의 Unit이라는 객체를 반환합니다. 이는 추후 조금 더 자세하게 알아볼게요.
매개변수의 활용
앞선 예제들과 앞선 포스팅에서의 매개변수는 모두 Int 자료형이었습니다. 이번에는 문자열 자료형을 사용해 볼게요.
package `03`
// 문자열 매개변수
fun concat(lastname:String, firstname: String) = lastname + firstname
// 매개변수 기본값
fun defaultConcat(lastname:String, firstname:String = "land") = lastname + firstname
// 여러 인자 매개변수
fun vararg(vararg value: String): String {
var text: String = ""
for (v in value)
text += v
return text
}
fun main(args: Array<String>) {
println(concat("Koons", "land"))
println(defaultConcat("Koons"))
println(concat(firstname = "land", lastname = "Koons"))
println(vararg("K", "o", "o", "n", "s", "l", "a", "n", "d"))
}
매개변수에는 String 값이 들어가도록 한 예제입니다. 먼저 concat() 함수는 두 문자열을 받아서 합쳐서 return하는 함수입니다. 다음 defaultConcat() 함수는 firstname의 기본값으로 "land"를 입력받습니다. 만약 firstname을 입력받지 않으면 "land"라는 글자가 기본값으로 대입됩니다.
concat() 함수에서 인자를 넣을때 매개변수에 이름을 입력하면 인자의 순서를 변경할 수 있습니다. 마지막으로 vararg() 함수는 동일한 자료형 여러개를 받을 수 있습니다. 몇 개 인지 알 수 없을때 유용하게 사용할 수 있습니다. 이를 가변인자라 합니다.
이번 포스팅에서는 Unit이라는 자료형과 매개변수를 여러가지 방법으로 활용하는 방법에 대해서 알아보았습니다. 다음 포스팅에서는 실제 함수들이 어떻게 사용되는지 알아보도록 하겠습니다. 도움이 되셨으면 합니다. 이상입니다.
'쿤즈 Dev > Kotlin' 카테고리의 다른 글
[Kotlin] 함수의 사용(1): 간단하게 함수 만들고 사용하기 (0) | 2022.05.18 |
---|---|
[Kotlin] 코틀린에서 사용하는 연산자 알아보기(2) (0) | 2022.05.11 |
[Kotlin] 코틀린에서 사용하는 연산자 알아보기(1) (2) | 2022.05.10 |
[Kotlin] 변수에 저장된 값 비교하는 방법 (0) | 2022.05.09 |
[Kotlin] 자료형 검사하기 (Null Point Exception) (0) | 2022.05.08 |
댓글