KOTLIN · 함수
확장 프로퍼티 (Extension Properties)
기존 클래스에 프로퍼티를 추가합니다. backing field가 없으므로 getter/setter를 통해 계산된 값을 반환합니다.
함수중급extension-propertygettercomputed-property
핵심 설명
기존 클래스에 프로퍼티를 추가합니다. backing field가 없으므로 getter/setter를 통해 계산된 값을 반환합니다.
Kotlin code
// 문자열 확장 프로퍼티
val String.isEmail: Boolean
get() = matches(Regex("^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$"))
val String.wordCount: Int
get() = trim().split("\s+".toRegex()).size
// 리스트 확장 프로퍼티
val <T> List<T>.secondOrNull: T?
get() = if (size >= 2) this[1] else null
val List<Int>.median: Double
get() {
val sorted = this.sorted()
val mid = size / 2
return if (size % 2 == 0)
(sorted[mid - 1] + sorted[mid]) / 2.0
else sorted[mid].toDouble()
}
fun main() {
println("user@example.com".isEmail) // true
println("not-email".isEmail) // false
println("Hello Kotlin World".wordCount) // 3
println(listOf(10, 20, 30).secondOrNull) // 20
println(listOf(1, 3, 5, 7).median) // 4.0
}학습 팁
확장 프로퍼티는 자주 사용하는 계산 로직을 자연스러운 프로퍼티 접근으로 만들어 코드 가독성을 높입니다.
주의할 점
확장 프로퍼티에는 backing field(field)를 사용할 수 없습니다. 상태 저장이 필요하면 확장 함수와 외부 맵을 조합하세요.
자주 묻는 질문
확장 프로퍼티 (Extension Properties)란 무엇인가요?
기존 클래스에 프로퍼티를 추가합니다. backing field가 없으므로 getter/setter를 통해 계산된 값을 반환합니다.
확장 프로퍼티 (Extension Properties) 학습 시 주의할 점은 무엇인가요?
확장 프로퍼티에는 backing field( field )를 사용할 수 없습니다. 상태 저장이 필요하면 확장 함수와 외부 맵을 조합하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.