안드로이드 개발자의 창고
[18일차 Kotlin] Infix 함수 본문
출처 : 안드로이드 앱스쿨 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 처럼 연산자를 사용하듯이 작성할 수 있다.
'Computer > Kotlin' 카테고리의 다른 글
[19일차 Kotlin] 배열(Arrray) (0) | 2023.05.23 |
---|---|
[18일차 Kotlin] 리플렉션(Reflection) (0) | 2023.05.23 |
[Kotlin 18일차] 확장 함수(Extension Function) (0) | 2023.05.23 |
[18일차 Kotlin] 익명 함수 (0) | 2023.05.23 |
[18일차 Kotlin] 인라인 함수(Inline Function) (0) | 2023.05.23 |