새소식

Language/Kotlin

[Kotlin] infix & top level function

  • -

📌 infix 확장 함수

Kotlin에서 infix 확장함수는 특정 타입의 메서드를 더 읽기 쉽고 자연스러운 문법으로 호출할 수 있게 해주는 기능입니다. infix 함수는 한 쌍의 객체 사이에 중위 연산자처럼 사용될 수 있으며, 단일 파라미터를 받습니다. 이를 통해 코드를 더 간결하고 직관적으로 작성할 수 있습니다.

 

infix 확장함수 정의 방법

infix 함수를 정의하기 위해서는 몇 가지 규칙이 있습니다.

멤버 함수 또는 확장 함수여야 합니다. 단 하나의 파라미터를 가져야 합니다. infix 키워드로 시작해야 합니다.

 

사용 시 주의 사항

infix 함수는 가독성을 높이는 목적으로 사용되며, 남발할 경우 코드의 명시성을 해칠 수 있으므로 적절한 상황에서 사용하는 것이 중요합니다. 함수가 단 하나의 인자만 받는다는 제한 때문에, 여러 파라미터를 요구하는 로직에는 사용할 수 없습니다.

 

  • infix & 확장 함수 예시
infix fun String.isSameAs(value: String): Boolean {
    return this == value
}

fun main() {
    val result = "hello" isSameAs "hello"
    println(result) // true

    val result2 = "hello".isSameAs("hello")
    println(result2) // true

    val result3 = "hello" isSameAs("hello")
    println(result3) // true

    val result4 = "hello".isSameAs "hello" // 사용 불가

}

 

 

  • infix & 맴버 함수 예시
class Person(val name: String) {
    val friends = mutableListOf<Person>()

    // infix 맴버 함수 정의
    infix fun likes(other: Person) {
        friends.add(other)
    }
}

fun main() {
    val john = Person("John")
    val jane = Person("Jane")

    // infix 함수 사용
    john likes jane // 'john.likes(jane)'와 동일하지만 더 자연스럽게 표현됨.

    println("${john.name}의 친구들: ${john.friends.joinToString { it.name }}")
    // John의 친구들: Jane
}

 

 

 

 


📌 top level function

톱레벨 함수(Top-level function)는 코틀린에서 클래스나 객체 내부가 아닌, 파일의 최상위 레벨에 정의된 함수를 말합니다.
즉, 톱레벨 함수는 어떤 클래스에도 속하지 않으며, 파일 내 어디서든 직접 호출할 수 있는 함수입니다.

 

코틀린에서는 이러한 톱레벨 함수를 사용하여 클래스나 객체 없이도 함수를 정의할 수 있기 때문에, 작은 유틸리티 함수나 도우미 함수를 작성할 때 매우 유용합니다.

 

자바와 같은 다른 언어에서는 이러한 기능을 제공하기 위해 모든 함수를 클래스 안에 넣어야 하지만, 코틀린에서는 이런 제약 없이 더 자유롭게 함수를 정의할 수 있습니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.