본문 바로가기
Kotlin

Kotlin13. class의 다른 확장 - Pair, 확장메소드/프로퍼티..

by 히예네 2023. 8. 13.
728x90
반응형

1. 복수의 값을 토해내는 리턴값

(메인)함수나  메소드는 기본적으로 하나만 리턴한다. 

그런데 경우에 따라서는 2,3개를 반환해야할때도 있다.

Pair, Triple이라는 클래스를 이용하면 편하다. 

 

※attribute :  속성

 

2개의 값을 다루는 Pair class

first 첫번째 값
second 두번째 값

 

3개의 값을 다루는 Triple class

first 첫번째 값
second 두번째 값
third 세번째 값
fun main() {
    val t = Person("아테나", "안", 12)
    val (n1,n2) = t.getName() //리턴값이 2개이므로 복수의 변수를 준비해야한다.
    
    val (at1,at2,at3) = t.getArrt() //리턴값이 3개이므로 복수의 변수를 준비해야한다.
    
    println(n1+"::"+n2)
    println(at1+"::"+at2+"::"+at3)
}

class Person(first : String, family : String, age : Int) {
    val first = first
    val family = family
    val age = age
    
    fun getName():Pair<String,String>{
        return Pair(first,family)
    }
    
    fun getArrt() : Triple<String,String,Int> {
        return Triple(first,family,age)
    }
}
//output
아테나::안
아테나::안::12

2. 확장 메소드, 확장 프로퍼티

class의 프로퍼티나 메소드는 기본적으로 정의된 내용으로 사용된다. 

그렇지만 이미 정해진 내용을 확장하여 프로퍼티나 메소드를 추가하고싶을때가 있다. 

이때 쓰는것이 확장 메소드, 확장 프로퍼티이다. 

 

fun main() {
	val t = Person("아테나","안",21)
   	t.println()
    
    val h = Person("캬","캬앙",20)
    h.println()
}

class Person(first : String, family : String, age : Int) {
    val first = first 
    val family = family
    val age = age
}

val Person.name : String
	get() = this.first + "-" + this.family

fun Person.println(){
    println("${this.name} (${this.age})")
}
//output
아테나-안 (21)
캬-캬앙 (20)
728x90
반응형