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 |