kotlin

코틀린 : 생성과 사용 멤버 등의 개념

ChloeLee 2020. 10. 19. 21:08

1) 생성

enum class 열거형 상수 이름 {

    열거형 상수 나열

}

 

2) 사용

열거형 상수 이름.열거형 상수

 

3) 멤버 

name 속성은 나열된 상수 이름을 리턴

ordinal 속성을 호출하면 정수 값을 리턴

상수 이름을 나열 할 때 생성자를 이용해서 데이터를 설정하는 것이 가능

 

4) 옵션이 정수로 만들어진 경우 파악해야하는 부분

=> 숫자의 패턴이 1, 2, 3 처럼 연속성을 갖는지 아니면 1, 2, 3, 4, 8 처럼 2의 지수승인지 파악 

연속성을 갖는 숫자 패턴이면 하나만 선택해서 설정

2의 지수승이면 조합 가능 > 하나의 비트만 1인 경우

조합을 할 때는 2개의 옵션을 +로 결합해도 되고 |로 해도 됩니다.

 

A: 65

B: 66

C: 67

 

마우스 왼쪽 : 1

마우스 오른쪽: 2

shift : 4

control : 8

마우스 미들 버튼 : 16

alt : 32

=> 이런 형태의 또 다른 조합으로 안드로이드에서 레이아웃 설정 할 때 가로 맞춤과 세로 맞춤 같은 옵션

=> 이런 옵션을 사용 할 때 옵션 전체를 사용하고자 하면 -1 이라고 설정하면 된다.

=> 정수를 리턴하는 메소드나 정수를 설정해야하는 메소드의 경우에 음수가 필요 없는 경우라면 -1 은 가장 큰 수 (모든 비트가 1인 수)

 

재생 횟수 같은 곳에 -1 을 설정 하면 무한대 (가장 큰 수)이고 위치의 경우는 -1 은 끝까지 갔는데 못 찾은 경우이다.

 

5) Kotlin에서는 enum 자료형에는 나열된 열거형 상수 이외의 값은 설정 할 수 없다

//주생성자에 설정한 프로퍼티가 equals 할 때 비교가 됩니다.
data class User(val id: String, var pw:String) {
    var email : String = ""

}

enum class Priority(val no:Int){
    MAX(10), NORMAL(5), MIN(1)

}

fun main (args: Array<String>){
    var Priority : Priority = Priority.MAX
    // priority = 10 //ERROR : 열거형 상수에 정수 값을 직접 대입하는 것은 에러
    val user1 : User = User("adam", "1234")
    user1.email = "xxx@gmail.com"
    //user1의 내용을 출력
    println(user1)
    println(user1.toString())

    val user2 : User = User("adam", "1234")
    user2.email = "xxx@gmail.com"

    println(user1 == user2)
    println(user1.equals(user2))

    val user3 : User = User("adam", "1234")
    user2.email = "yyy@gmail.com"

    println(user1 == user3) // 내용 비교하며 주생성자의 프로퍼티만 비교
    println(user1.equals(user3))

    // 해시 코드 비교
    println(user1 === user3)

    val user4 : User = user3.copy("yyys")
    println(user4)
    println(user4.email)

}