Infix?
infix... 뭔가 많이 들어본 단어죠?
prefix, infix, postfix... 전위 표기법, 중위 표기법, 후위 표기법을 떠올리셨나요? 아주 훌륭합니다!
A + B라는 식을 표기할 때,
prefix -> +AB
infix -> A+B
postifx -> AB+
와 같이, 연산자와 피연산자의 위치에 따라 전위(prefix), 중위 (infix), 후위 (postfix)로 나눕니다.
우리가 일상생활에서 자주 쓰는 표기법은 중위(infix)죠?
연산자가 중간에 오는 infix와 같이, infix 함수는 두 피연산자 사이 함수가 들어가는 형태입니다.
infix 함수 정의
infix fun Int.plus(n: Int): Int {
return this + n
}
fun main() {
println(5 plus 10)
}
// 출력
>>> 15
infix 함수는 fun 앞에 infix를 붙여 정의할 수 있습니다.
infix fun (객체명).(메소드명)(매개변수) : (return값) : {
(바디)
}
this 키워드를 통해 객체 자신을 호출할 수 있습니다.
infix 키워드만 추가되었을 뿐, 확장함수와 비슷한 구조죠?
클래스 앞에서의 infix 함수 정의
class Test {
var n = 1
infix fun plus(plusN: Int): Int {
return this.n + plusN
}
}
fun main() {
val test = Test()
test.n = 123
println(test plus 100)
}
클래스 안에서 infix 메소드를 정의할 경우,
너무 당연하게도 this는 클래스 자기 자신을 가리킵니다.
따라서, 클래스명은 생략할 수 있습니다.
infix 함수는 잘 사용하면 가독성을 꽤 향상시킬 수 있을 것 같습니다.
'코틀린 파헤치기 > 3부. 코틀린 고급' 카테고리의 다른 글
[코파기 3부] 6. 코틀린과 함수형 프로그래밍 (2) : 람다식 (0) | 2023.03.24 |
---|---|
[코파기 3부] 5. 코틀린과 함수형 프로그래밍 (1) : 함수형 프로그래밍이란? (0) | 2023.03.24 |
[코파기 3부] 4. 코틀린과 스코프 함수 : apply, run, with, also, let (0) | 2023.03.22 |
[코파기 3부] 3. 코틀린과 예외처리 : try - catch, finally (0) | 2023.03.22 |
[코파기 3부] 1. 코틀린과 확장함수 (Extension Functions) (0) | 2023.03.17 |