코틀린의 구조 분해(구조체 분해)는 데이터 클래스의 주요 속성을 개별 변수로 편리하게 분해할 수 있는 기능을 제공합니다. 이것은 주로 Pair, Triple과 같은 튜플 형태의 데이터 클래스나 컬렉션에서 사용됩니다.
1. 데이터 클래스의 구조 분해
data class Point(val x: Int, val y: Int)
val point = Point(3, 5)
// 구조 분해
val (x, y) = point
println("x: $x, y: $y") // 출력: x: 3, y: 5
위의 예제에서 Point 클래스의 인스턴스를 생성하고, 이를 구조 분해하여 x와 y 변수에 할당하였습니다.
2. Pair와 Triple의 구조 분해
val pair: Pair<String, Int> = Pair("apple", 10)
val triple: Triple<String, Int, Boolean> = Triple("banana", 5, true)
// Pair의 구조 분해
val (fruit, count) = pair
println("Fruit: $fruit, Count: $count") // 출력: Fruit: apple, Count: 10
// Triple의 구조 분해
val (name, quantity, isAvailable) = triple
println("Name: $name, Quantity: $quantity, Available: $isAvailable")
// 출력: Name: banana, Quantity: 5, Available: true
Pair와 Triple 클래스는 각각 2개와 3개의 구성 요소를 가진 튜플 클래스입니다. 이러한 클래스의 인스턴스를 생성하고 구조 분해하여 개별 변수에 할당할 수 있습니다.
3. 함수에서의 구조 분해
구조 분해는 함수의 매개변수에서도 사용될 수 있습니다.
fun calculateDimensions(width: Int, height: Int): Pair<Int, Int> {
val area = width * height
val perimeter = 2 * (width + height)
return Pair(area, perimeter)
}
// 함수 호출과 구조 분해
val (areaResult, perimeterResult) = calculateDimensions(4, 5)
println("Area: $areaResult, Perimeter: $perimeterResult")
// 출력: Area: 20, Perimeter: 18
위의 예제에서 calculateDimensions 함수는 너비와 높이를 매개변수로 받아서 면적과 둘레를 계산하여 Pair로 반환합니다. 함수를 호출하고 반환된 Pair를 구조 분해하여 각각의 결과를 개별 변수에 할당하고 출력합니다.
구조 분해는 코드의 가독성을 향상시키며, 특히 데이터 클래스나 튜플과 같이 여러 값을 가진 객체를 다룰 때 유용합니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 위임 프로퍼티 (0) | 2024.01.06 |
---|---|
코틀린 이터레이션 (0) | 2024.01.05 |
코틀린 호출과 인덱스로 원소 찾기 (0) | 2024.01.04 |
코틀린 대입 (0) | 2024.01.04 |
코틀린 중위 연산 (0) | 2024.01.03 |