코틀린 강좌 #22 함수의 argument를 다루는 방법과 infix 함수

Kotlin/기본 문법 · 2020. 12. 24. 13:23

 

테크과학! DiMo

 

테크과학! DiMo

개발자가 얘기하는 생활 속 IT기술에 대한 과학! 여러분이 몰랐던, 혹은 정확히 알지 못했던 IT 테크놀러지를 파드립니다! 좋은 영상을 위한 채널 후원, 투네이션을 통해서 해주세요! 후원링크 htt

www.youtube.com

 

 

개발 환경: play.kotlinlang.org


 

fun main() {
    read(7)
    read("감사합니다")
}

fun read(x: Int) {
    println("숫자 $x 입니다")
}

fun read(x: String) {
    println(x)
}

Output:
숫자 7 입니다
감사합니다



파라미터를 받아야 하는 함수이지만 별다른 파라미터가 없더라도 기본 값으로 동작해야 한다면


default arguments를 사용한다.

 

fun main() {
    deliveryItem("짬뽕")
    deliveryItem("책", 3)
    deliveryItem("노트북", 30, "학교")
    
    deliveryItem("선물", destination = "친구 집")
}

fun deliveryItem(name: String, count: Int = 1, destination: String = "집") {
    println("${name}, ${count}개를 ${destination}에 배달하였습니다")
}
Output:
짬뽕, 1개를 집에 배달하였습니다
책, 3개를 집에 배달하였습니다
노트북, 30개를 학교에 배달하였습니다
선물, 1개를 친구 집에 배달하였습니다

 

 


named arguments

파라미터의 순서와 관계 없이 파라미터의 이름을 사용하여 직접 파라미터의 값을 할당하는 기능

 


variable number of arguments(vararg)


같은 자료형을 갯수에 상관없이 파라미터로 받고 싶을 때 사용

 

 

fun main() {
    sum(1, 2, 3, 4)
}

fun sum(vararg numbers :Int) {
    var sum = 0
    
    for (n in numbers)
    {
        sum += n
    }
    
    print(sum)
}

Output: 10

 

vararg는 갯수가 지정되지 않은 파라미터라는 특징이 있으므로 다른 파라미터와 같이 쓸 때는 반드시 맨 마지막에 위

 

치 해야 한다

 

infix함수

 

연산자처럼 쓸 수 있는 함수

 

 

fun main() {
    println(6 multiply 4)
    // 좌측에 붙은 6이 infix 함수가 적용되는 객체 자신 즉, this에 해당
    // 우측에 붙은 4가 파라미터인 x에 해당
    
    
    println(6.multiply(4)) // 일반적인 클래스의 함수처럼 사용하는 것도 가능
}

infix fun Int.multiply(x: Int): Int = this * x

Output:
24
24

 

 

참고로 class 안에서 infix 함수를 선언할 때에는 적용할 클래스가 자기 자신이므로 클래스 이름은 쓰지 않는

 

다.