Pair? Triple?
코틀린에는 변수의 값들을 하나로 묶어 사용할 수 있는 data class가 존재한다.
이는 자료구조 Map과 비슷한 형상을 띄고 있지만 key-value 구조가 아닌 정말 여러 개의 값을 하나의 묶음으로 표현한 것이므로 자료구조의 개념이 아닌 단순하게 편의성을 위해 변수를 묶어 사용한다.
이 data class는 Pair와 Triple로 이름에서 알 수 있듯이 Pair는 두 개의 값을, Triple은 세 개의 값을 묶어 사용한다.
💡
이 클래스의 값에는 의미가 부여되지 않으며, 어떤 목적으로도 사용할 수 있습니다.
위 설명에서 알 수 있듯이 단순 편의성을 위해 정의된 data class임을 알 수 있다.
정의하는 법
Pair와 Triple은 묶는 변수의 개수만 다를 뿐 사용하는 방법은 같으므로 Pair만 작성하도록 하겠다.
val pair = Pair<String, Int>("Hello", 3)
val pair = Pair("Hello", 3) // 타입 생략
val (a, b) = Pair("Hello", 3)
to
infix 함수인 to를 사용하여 Pair를 정의할 수 도 있다.
val pair: Pair<String, Int> = "Hello" to 3
val (a, b) = "Hello" to 3
함수
first, second, third
val triple = Triple("Hello", 1, 0.3)
println(triple.first) // Hello
println(triple.second) // 1
println(triple.third) // 0.3
toString()
val pair = Pair("Hello", 3)
val triple = Triple("bye", 1, 0.3)
println(pair.toString()) // (Hello, 3)
println(triple.toString()) // (bye, 1, 0.3)
toList()
val pair = Pair("Hello", 3)
val triple = Triple("bye", 1, 0.3)
println(pair.toList()) // [Hello, 3]
println(triple.toList()) // [bye, 1, 0.3]
실제 서비스에서 상품 가격 + 옵션 가격을 쉽게 처리하기 위해 Pair로 각각 가격을 주입하여 로직에 태웠다. 이 개념을 몰랐을 때에는 별도의 테이블을 구축해야 하나, 혹은 옵션 가격을 태우기 위해 상품 로우를 하나 더 추가해야 하나 했다.
쩝.
역시 많이 알아야 해결법도 여러 방면이 나오는 듯 싶고 공부 해야지...🫠
'Backend > Java & Kotlin' 카테고리의 다른 글
[Kotlin] Java와 Kotlin의 접근 제어자 차이 (0) | 2024.03.24 |
---|---|
[Java] 객체 지향 4대 특징-3 (추상화) (0) | 2024.01.22 |
[Java] 객체 지향 4대 특징-2 (다형성) (0) | 2024.01.19 |
[Java] 객체 지향 4대 특징-1 (상속, 캡슐화) (0) | 2024.01.15 |
this와 super (3) | 2024.01.05 |