componentN을 사용한 구조 분해 선언
component 함수로 데이터 클래스 인스턴스를 변수로 구조 분해해 보세요.
componentN을 사용한 구조 분해 선언은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
구조 분해 기초
구조 분해 선언은 한 단계로 객체를 여러 변수에 풀어 넣습니다. componentN() 연산자 함수를 사용합니다.
데이터 클래스 구조 분해
데이터 클래스는 component1, component2, ...를 자동으로 생성하므로 val (a, b) = obj와 같이 작성할 수 있습니다.
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(3, 5)
val (x, y) = p
println("x=$x, y=$y")
}Pair 구조 분해
표준 라이브러리 타입인 Pair와 Triple은 기본적으로 구조 분해를 지원합니다.
fun main() {
val pair = "Ada" to 35
val (name, age) = pair
println("$name is $age")
}Triple 구조 분해
Triple은 세 값을 보관하며, 세 변수로 구조 분해할 수 있습니다.
fun main() {
val rgb = Triple(255, 128, 0)
val (r, g, b) = rgb
println("R=$r G=$g B=$b")
}맵 반복에서의 구조 분해
맵 항목에는 component1(키)과 component2(값)가 있습니다. for 반복문의 헤더에서 구조 분해하십시오.
fun main() {
val ages = mapOf("Alice" to 30, "Bob" to 25)
for ((name, age) in ages) {
println("$name -> $age")
}
}람다에서의 구조 분해
쌍을 받는 람다는 매개변수를 직접 구조 분해할 수 있습니다.
fun main() {
val pairs = listOf("a" to 1, "b" to 2, "c" to 3)
pairs.forEach { (letter, num) -> println("$letter=$num") }
}_를 사용해 값 무시하기
필요하지 않은 값은 밑줄 _을 사용해 건너뛰십시오.
data class User(val name: String, val email: String, val age: Int)
fun main() {
val u = User("Ada", "ada@example.com", 35)
val (name, _, age) = u
println("$name ($age)")
}여러 값 반환하기
함수는 Pair 또는 사용자 지정 데이터 클래스를 반환할 수 있으며, 호출하는 쪽에서 구조 분해합니다.
data class Result(val sum: Int, val product: Int)
fun computeBoth(a: Int, b: Int) = Result(a + b, a * b)
fun main() {
val (s, p) = computeBoth(4, 5)
println("sum=$s product=$p")
}사용자 지정 componentN
어떤 클래스든 operator fun componentN()을 선언하여 구조 분해를 지원할 수 있습니다.
class RGB(val r: Int, val g: Int, val b: Int) {
operator fun component1() = r
operator fun component2() = g
operator fun component3() = b
}
fun main() {
val (red, green, blue) = RGB(255, 100, 0)
println("$red $green $blue")
}withIndex()를 사용한 구조 분해
withIndex()로 반복할 때 인덱스와 값을 쌍으로 얻습니다.
fun main() {
val fruits = listOf("apple", "banana", "cherry")
for ((idx, fruit) in fruits.withIndex()) {
println("$idx: $fruit")
}
}제한 사항: 위치 기반
구조 분해는 이름이 아니라 위치를 기준으로 합니다. 데이터 클래스 필드의 순서를 바꾸면 호출하는 곳의 의미가 조용히 바뀝니다.
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(10, 20)
val (a, b) = p // a=x, b=y
// Add a property in the middle and old destructuring shifts!
println("$a $b")
}빠른 확인
i번째 프로퍼티의 구조 분해를 가능하게 하는 연산자 함수는 무엇입니까?
복습
구조 분해는 componentN() 연산자 함수를 사용합니다. 데이터 클래스, Pair, Triple 및 맵 항목은 기본적으로 구조 분해를 지원합니다. 값을 건너뛸 때는 _을 사용하고, 구조 분해가 이름이 아닌 위치를 기준으로 한다는 점에 주의하십시오.
자주 묻는 질문
“componentN을 사용한 구조 분해 선언” 강의는 무료인가요?
네 — “componentN을 사용한 구조 분해 선언” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“componentN을 사용한 구조 분해 선언”에서 뭘 배우나요?
component 함수로 데이터 클래스 인스턴스를 변수로 구조 분해해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“componentN을 사용한 구조 분해 선언” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 데이터 클래스 기초: 자동 생성 메서드
- copy()와 부분 재정의로 복사하기
- componentN을 사용한 구조 분해 선언
- 컬렉션과 맵 키로 사용하는 데이터 클래스