본문 바로가기
프로그래밍언어/Kotlin

[Kotlin] Infix Function

by 가판이 2025. 2. 20.

kotlin 에 재미있는 함수가 있어서 알아보았다.

Infix function 이라는건데, 간단하게 어떻게 정의하고 사용하는지 보면:

fun main() {

    infix fun Int.times(str: String) = str.repeat(this) // 1
    println(2 times "Bye ")

}

// Bye Bye

 

Int 자료형에 Infix 확장 함수를 정의합니다.

times Infix 함수는 문자열을 입력을 받아서 해당 문자열을 2번 반복해서 응답하는 함수입니다.

사용법은 직관적으로 `정수형 times 문자열` 로 사용하면 됩니다.

 

클래스 멤버 메서드도 사용이 가능합니다:

class Person(val name: String) {
    val likedPeople = mutableListOf<Person>()
    val likedAnimals = mutableListOf<Dog>()
    infix fun likes(other: Person) { likedPeople.add(other) }  // 6
    infix fun likes(other: Dog) { likedAnimals.add(other) }  // 7
}

class Dog(val name: String)

fun main() {
    val sophia = Person("Sophia")
    val claudia = Person("Claudia")
    val jindo = Dog("jindo")
    sophia likes claudia
    shphia likes jindo
    sophia.likedPeople.forEach { println(it.name) }
    sophia.likedAnimals.forEach { println(it.name) }
}

//Claudia
//jindo

 

sophia, claudia 객체를 만들고, sophia 가 claudia 를 좋아한다고 하면 sophia 객체에 좋아하는 사람 목록에 추가합니다. 이렇게 infix class method 를 사용할 수가 있습니다.

 

이렇게 사용하면 코드의 가독성이 오를 수 있으리라 생각이 됩니다. 물론 영작이 어렵다면 더욱 혼돈이 될거 같아 선듯 손대기 어렵기도 할거 같네요.

 

이 재미있는 infix 함수를 사용하려면 다음과 같은 규칙을 따라야합니다:

1. 반드시 멤버 함수(메서드) 또는 확장 함수이어야합니다.

2. 반드시 단일 인자를 받도록 해야합니다.

3. 인자는 반드시 가변 인자를 받아서도 안되고 기본값도 가져서는 안됩니다.

반응형

'프로그래밍언어 > Kotlin' 카테고리의 다른 글

[kotlin] 자주 사용되는 구문  (2) 2025.02.09
Kotlin 기본 문법  (0) 2025.02.04