Kotlin 변수 묶기 Pair, Triple

Notepad96

·

2020. 10. 8. 16:35

300x250

 

 


1. 2개의 변수 묶기 - Pair

data class Pair<out A, out B> (val first: A, val second: B)

 

Pair 클래스는 다음과 같이 정의되어 있다.

 

Pair 클래스는 data class로서 2개의 변수를 묶어 사용하기 유용하다.

 

 

fun main() {
    var a: Pair<Int, String> = Pair(3, "Kim")
    var b: Pair<Int, String> = 1 to "Lee"
    println(b.toString())
    
    b = b.copy(first = 5, second = "god")	// 값 변경
    
    if(a.first > b.first) println("a turn")
    else println("b turn")
}

결과

pair 변수를 생성하기 위해서는 Pair 생성자를 사용하거나 to를 사용할 수 있다.

 

 

toString을 호출하면 (원소1, 원소2) 형태로 반환해준다.

 

 

첫 번째 원소는 first를 통하여 두 번째 원소는 second를 통하여 접근할 수 있다.

 

 

 

 

+) first와 second는 val로 선언되어 있어 읽기는 가능하지만 쓰기는 불가능하다.

 

따라서 값을 변경하기 위해서는 copy를 사용하여 복사하는 것이지만 마치 값을 변경한 것처럼 할 수 있다.

 

 

 

 

 


2. 3개의 변수 묶기 - Triple

data class Triple<out A, out B, out C> (val first: A, val second: B, val third C)

 

Triple 또한 data class로 정의되어있다.

 

Triple은 3개의 변수를 묶어 이용하기 유용하다.

 

fun main() {
    var a: Triple<Int, String, Double> = Triple(1, "Kim", 5.0)
    var b: Triple<Int, String, Double> = Triple(1, "Kim", 5.0)
    println(b.toString())
    println("${a.first} | ${a.second} | ${a.third}")
    
    b = b.copy(first = 4, second = "Lee", third = 6.0)
    
    if(a.first == b.first) println("equal")
    else println("diff")
}

결과

 

Triple을 사용하여서 변수를 초기화 한다.

 

각 원소들은 first, second, third를 통하여 접근할 수 있다.

 

 

Triple을 보면 data class로서 equals()가 자동으로 재정의되어 있다. 따라서 비교 연산자를 사용하여 간편하게 동일한지 비교할 수도 있다.

 

 

 

 

 

+) Pair과 마찬가지로 Triple에서도 first, second와 third가 val로 선언되어 있어 읽기는 가능하지만 쓰기는 불가능하다.

 

따라서 값을 변경하기 위해서는 copy를 사용하여 복사하는 것이지만 마치 값을 변경한 것처럼 할 수 있다.

 

 

 

 


3. 참 조

 

 

 

Pair - Kotlin Programming Language

 

kotlinlang.org

 

 

 

Triple - Kotlin Programming Language

 

kotlinlang.org

 

 

300x250