Kotlin 객체 대상(5)✔️데이터 클래스

2182 단어
  • 데이터 클래스 선언, data 키워드
  • copy 함수 사용
  • 데이터 클래스 해체
  • 힌트: Anykotlin의 모든 종류의 뿌리류,kotlin의 모든 종류는 직접 또는 간접적으로 계승Any류이다.

  • 데이터 형식으로서 equals,hashCode,toString을 다시 써야 한다.번거롭지는 않지만 속성이 많을 때 코드량이 많을 수 있다는 점을 감안하여 kotlin 언어 디자인에서 데이터 클래스(Data Classes)를 제공했다.

    데이터 클래스 설명, 데이터 키워드


    데이터 클래스 성명은 매우 간단합니다. 클래스 헤더class 앞에 데이터 키워드를 추가하기만 하면 됩니다.
    data class  ( ...)
    

    예를 들면 다음과 같습니다.
    data class User(val name: String, var password: String)
    
  • 데이터 키워드를 추가한 후 User 클래스는 데이터 클래스로 변했다. 사실상 그의 밑바닥에는 Any의 세 가지 함수를 다시 쓰고 copy 함수를 추가했다.equals 함수의 재작성은 모든 속성이 같고 equals가true로 되돌아오는 것입니다.

  • 알림: 데이터로 데이터 클래스를 설명하는 주 구조 함수에서 매개 변수는 반드시val 또는 var로 성명해야 하며 생략할 수 없습니다.

    2. copy 함수 사용


    데이터 클래스에 코피 함수를 제공합니다. 코피 함수를 통해 새로운 데이터 클래스의 대상을 복사할 수 있습니다.
    fun main(args: Array) {
        val user1 = User(" ", "123")
    
        val user2 = user1.copy(name = " ")
        val user3 = user1.copy()
    
        println(user1 == user2)     // false
        println(user1 == user3)     // true
    
        println(user1.toString())   // User (name= , password=123)
        println(user2.toString())   // User (name= , password=123)
        println(user3.toString())   // User (name= , password=123)
    
        println(user1.hashCode())   // 81083983
        println(user2.hashCode())   // 2662763
        println(user3.hashCode())   // 81083983
    }
    

    3. 데이터 클래스 해체


    데이터 대상은 하나의 데이터 용기로서 여러 개의 관련 데이터가 하나의 대상에 포장된 것으로 이해할 수 있다.구조는 상반된 조작을 하고 데이터 대상을 분리한 다음에 내부의 속성을 꺼내 서로 다른 변수에 값을 부여한다.구조는 데이터 대상뿐만 아니라 집합 대상에도 적용된다.
    fun main(args: Array) {
        val user1 = User(" ", "123")
    
        val(name1, pwd1) = user1
        println(name1)  //  
        println(pwd1)   // 123
    
        val(name2, _) = user1   //   password 1️⃣
        println(name2)  //  
    
        val(name3) = user1  // 2️⃣
        println(name3)  //  
    }
    

    코드 1️⃣2️⃣줄도user1 대상에 대한 해체, 그중 1️⃣행 코드의 밑줄_은 구조의 두 번째 속성 값이 필요하지 않다는 것을 의미한다.코드 2️⃣행은 하나의name3만 있는데 이런 해체 파라미터가 데이터 클래스 속성 개수보다 적은 경우 해체 규칙은 데이터 클래스 구조 속성 순서에 따라 해체한다.

    좋은 웹페이지 즐겨찾기