Uknow's Lab.
article thumbnail

 

 

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 함수는 잘 사용하면 가독성을 꽤 향상시킬 수 있을 것 같습니다.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.