Archives
Recent Posts
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[18일차 Kotlin] Infix 함수 본문

Computer/Kotlin

[18일차 Kotlin] Infix 함수

Wise-99 2023. 5. 23. 19:54

 

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

📖 Infix 함수

  • 함수를 연산자처럼 사용할 수 있는 함수이다.
  • 1 함수이름 값2 형태로 호출한다.
  • 1 객체를 통해 함수를 호출하고 매개변수로 값2를 전달한다.
  • infix fun 1의 타입.함수이름(2를 담을 매개변수) : 반환타입

 

 

 

📖 예제 코드

fun main() {
    val v1 = 100
    val r1 = v1.add2(50)
    println("r1 : $r1") // 150

    var r2 = v1 add2 50
    println("r2 : $r2") // 150

    var obj1 = TestClass1()
    var obj2 = TestClass1()
    obj1.number1 = 100
    obj2.number1 = 200

    val r3 = obj1 add4 obj2
    println(r3.number1) // 300

    val r4 = obj1.add4(obj2)
    println(r4.number1) // 300
}

infix fun Int.add2(a1:Int):Int{
    return this + a1
}

infix fun add3(a1 :Int) : Int{ }    <<< 오류 발생

class TestClass1{
    var number1 = 0

    infix fun add4(target:TestClass1) : TestClass1{
        val r1 = this.number1 + target.number1
        val t1 = TestClass1()
        t1.number1 = r1
        return t1
    }
}

✔️ 코드 해석

  • val r1 = v1.add2(50)
    • infix 함수인 add2()를 호출한다.
    • add2()에서 this는 첫번째 값인 100을 의미한다.
    • 해당 코드는 var r2 = v1 add2 50 처럼 연산자를 사용하듯이 작성할 수 있다.
  • val r4 = obj1.add4(obj2)
    • 멤버 메서드이면서 infix 함수인 add4()를 호출한다.
    • add4()에서 this는 obj1을, target은 obj2를 의미한다.
    • add4()에서 새로운 객체인 t1을 생성하여 number1의 합을 저장한다.
    • t1을 반환하고 이를 받은 r4의 number1은 300이 저장되어 있다.
    • 해당 코드는 val r3 = obj1 add4 obj2 처럼 연산자를 사용하듯이 작성할 수 있다.