여러 인스턴스 리턴하는 방법

황승현·2023년 12월 12일
0

코틀린 강의 정리

목록 보기
32/36
  • 메소드는 기본적으로 하나의 데이터를 리턴한다.
  • 두 개 이상의 데이터를 포함하는 데이터클래스를 설계하고 인스턴스를 리턴하면 가능하다.
  • 하지만 매번 불필요한 클래스를 만드는 행위는 비효율적이다.

Pair를 활용해서 두 개의 인스턴스 리턴

두개의 인스턴스를 반환할 때 Pair 키워드를 사용한다.

	var chicken = Chicken() //Chicken 클래스 객체 생성, 인스턴스화
    var eggs = chicken.getEggs() //Chicken 클래스의 메소드 실행, 달걀과 맥반석을 묶은 쌍이 반환됨
    var listEggs = eggs.toList() //eggs라는 변수(달걀과 맥반석 쌍)를 리스트로 변환
    
//    first, second로 관리
//    var firstEgg = eggs.first //리스트의 첫번째 요소, 달걀
//    var secondEgg = eggs.second //리스트의 두번째 요소, 맥반석
    
    // 리스트로 관리
    var firstEgg = listEggs[0]//리스트의 첫번째 요소, 달걀
    var secondEgg = listEggs[1]//리스트의 두번째 요소, 맥반석

    println("달걀의 종류는 ${eggs} 입니다.")
    println("리스트 달걀의 종류는 ${listEggs} 입니다.")
    println("첫번째 달걀의 종류는 ${firstEgg} 입니다.")
    println("두번째 달걀의 종류는 ${secondEgg} 입니다.")
}

// Chicken 클래스 정의
class Chicken {
    fun getEggs(): Pair<String, String> { //두 개의 문자열을 하나로 묶은 쌍을 반환하는 메소드
        var eggs = Pair("달걀", "맥반석") //달걀과 맥반석을 하나의 쌍으로 묶음
        return eggs //달걀과 맥반석 쌍 반환
    }
}

Triple를 활용해서 세 개의 인스턴스 리턴

세개의 인스턴스를 반환할 때 Triple 키워드를 사용한다.

fun main() {
    var chicken = Chicken() //Chicken 클래스 객체 생성, 인스턴스화
    var eggs = chicken.getThreeEggs() //Chicken 클래스의 메소드 실행, 달걀과 맥반석을 묶은 쌍이 반환됨
    var listEggs = eggs.toList() //eggs라는 변수(달걀과 맥반석 쌍)를 리스트로 변환
    
//    first, second, third로 관리
//    var firstEgg = eggs.first //리스트의 첫번째 요소, 달걀
//    var secondEgg = eggs.second //리스트의 두번째 요소, 맥반석
//    var eggTime = eggs.third //리스트의 세번째 요소, 20230101
    
    // 리스트로 관리
    var firstEgg = listEggs[0]//리스트의 첫번째 요소, 달걀
    var secondEgg = listEggs[1]//리스트의 두번째 요소, 맥반석
    var eggTime = listEggs[2]//리스트의 세번째 요소, 20230101

    println("달걀의 정보는 ${eggs} 입니다.")
    println("리스트 달걀의 정보는 ${listEggs} 입니다.")
    println("첫번째 달걀의 종류는 ${firstEgg} 입니다.")
    println("두번째 달걀의 종류는 ${secondEgg} 입니다.")
    println("달걀은 ${eggTime}에 나왔습니다.")
}

// Chicken 클래스 정의
class Chicken {
    fun getTwoEggs(): Pair<String, String> { //두 개의 문자열을 하나로 묶은 쌍을 반환하는 메소드
        var eggs = Pair("달걀", "맥반석") //달걀과 맥반석을 하나의 쌍으로 묶음
        return eggs //달걀과 맥반석 쌍 반환
    }

    fun getThreeEggs(): Triple<String, String, Int> { //세 개의 자료형 객체를 하나로 묶은 쌍을 반환하는 메소드
        var eggs = Triple("달걀", "맥반석", 20230101) //달걀과 맥반석 20230101을 하나의 쌍으로 묶음
        return eggs //달걀, 맥반석, 20230101 반환
    }
}

0개의 댓글