반응형
📌 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)는 코틀린에서 클래스나 객체 내부가 아닌, 파일의 최상위 레벨에 정의된 함수를 말합니다.
즉, 톱레벨 함수는 어떤 클래스에도 속하지 않으며, 파일 내 어디서든 직접 호출할 수 있는 함수입니다.
코틀린에서는 이러한 톱레벨 함수를 사용하여 클래스나 객체 없이도 함수를 정의할 수 있기 때문에, 작은 유틸리티 함수나 도우미 함수를 작성할 때 매우 유용합니다.
자바와 같은 다른 언어에서는 이러한 기능을 제공하기 위해 모든 함수를 클래스 안에 넣어야 하지만, 코틀린에서는 이런 제약 없이 더 자유롭게 함수를 정의할 수 있습니다.
반응형
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 자료형 | 자료형 변환 | 스마트 캐스트 (0) | 2024.05.12 |
---|---|
[Kotlin] 자료형 | 자료형 변환 | 스마트 캐스트 (0) | 2024.05.04 |
[Effective Kotlin] 2장 가독성 : Item 11번 ~14번 (0) | 2024.04.28 |
[Effective Kotlin] 1장 안전성 : Item 6번 ~ 10번 (1) | 2024.04.28 |
[Effective Kotlin] 1장 안전성 : Item 1번 ~ 5번 (0) | 2024.04.23 |