코틀린

[Youtube DiMo] 25강. Data / Enum

iseohyun 2022. 5. 3.

목차

    [25강] https://youtu.be/SKosPXHLT5Q

     

     

    0. 모든 객체에 기본 지원되는 함수

    모든 객체는 Any를 참조하므로 Any가 가지고 있는 메소드는 모든 객체가 사용할 수 있다.

    equals : 같은 (메모리) 객체인지 판별하는 함수
    toString : 객체명@해쉬코드(16진수)
    ※ 아무것도 호출되지 않았을 때도 toString이 호출(기본값)
    hashCode : 해쉬값을 정수형으로 반환
    fun main() {
        val a = MyClass("수박", 1)
        val b = MyClass("수박", 1)
        
        println(a.equals(b))
        
        println(a.hashCode()) // 10진수
        
        println(a.toString()) // 16진수
        println(a)
        println("%x".format(a.hashCode())) // 10 -> 16
    }
    
    class MyClass(val name: String, val id: Int)
    false
    835648992
    MyClass@31cefde0
    MyClass@31cefde0
    31cefde0

     

     

    1. Data class

    package com.iseohyun.examplecode.syntax.basic.oop
    
    fun main() {
        val a = Data("수박", 1)
    
        println(a.copy())
        println(a.copy(name = "참외"))
        println(a.copy(id = 3))
    }
    
    data class Data(val name: String, val id: Int)
    Data(name=수박, id=1)
    Data(name=참외, id=1)
    Data(name=수박, id=3)

    Component예제

    fun main() {
    	val list = listOf( Data("수박", 1),
            Data("딸기",5),
            Data("참외",3))
       
        for((a,b) in list) {
            println(a + ", " + b)
        }
    }
    
    data class Data(val name: String, val id: Int)
    수박, 1
    딸기, 5
    참외, 3

     

    2. Enum Class

    Enum은 열거형 객체로 전통적으로 대문자를 사용해왔습니다.
    fun main() {
    	println(State.SING.message)
        println(State.EAT.message)
        println(State.SLEEP.message)
        
        println(State.SING.isSleeping())
        
        val s: State = State.EAT
        println(s)
        println(s.message)
    }
    
    enum class State(val message: String) {
        SING("노래를 부릅니다."),
        EAT("밥을 먹습니다."),
        SLEEP("잠을 잡니다.");
        
        fun isSleeping() = this == State.SLEEP
    }
    노래를 부릅니다.
    밥을 먹습니다.
    잠을 잡니다.
    false
    EAT
    밥을 먹습니다.

    '코틀린' 카테고리의 다른 글

    [Youtube DiMo] 27-28강. 컬렉션 함수  (0) 2022.05.03
    [Youtube DiMo] 26강. Set / Map  (0) 2022.05.03
    [Youtube DiMo] 24강. 내부클래스  (0) 2022.04.30
    [Youtube DiMo] 23강. 함수  (0) 2022.04.30
    [Youtube DiMo] 22강. Null  (0) 2022.04.29

    댓글