Home 코틀린 기본 문법 정리 (?:, ?., as?, !!, lateinit)
Post
Cancel

코틀린 기본 문법 정리 (?:, ?., as?, !!, lateinit)

기본 문법2 (?:, ?., as?, !!, lateinit)

엘비스 ?: 연산자

1
2
3
4
5
6
7
8
fun main(args: Array<String>){
    var fishFood : Int? = null

    fishFood = fishFood?.dec() ?: 0

    println(fishFood)
}

1
2
3
4
5
6
7
8
9
10
11
fun main(args: Array<String>){
    var yts: String? = null

    fun elvis() {
        val name: String = yts ?: "YTS"

        val nameTwo: String = yts ?: return //함수자체를 return 시키도록 만들 수 도 있음

        val nameThree: String = yts ?: throw NullPointerException()
    }
}

엘비스 연산자는 널 값을 허용하지 않는 변수에 널 값이 들어갔을 때 null 값을 변환할 수 있는 결과를 만들어줌


안전한 호출 ?. 연산자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Names {  
    var name: String? = null  
  
}  
  
class Safe {  
  
    fun safeGetName() {  
        val names: Names? = Names()  
  
        val name: String = names?.name ?: "No Name"  
  
  print(name)  
    }  
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
fun main(args: Array<String>){
    var fishFood = 6

    if(fishFood != null)
        fishFood = fishFood.dec()

    println(fishFood)

    var fishFood2 : Int? = 5

    fishFood2 = fishFood2?.dec()

    println(fishFood2)
}

위 처럼 if 문을 사용해 null 이 아니면 값을 줄이는 코드를 아래와 같이 ? 를 사용하여 한 줄로 줄일 수 있다.


널 값 보증 !! 연산자

1
2
3
4
5
fun nonNull() {  
    val animal: String = "호랑이"  
  
  val animalName: String = animal!! // animal은 절대 null값이 아니기 때문에 !!연산자로 보증  
}

상황에 따라 Null이 아닌 값만 포함되는 경우가 생길 수 있다.

그럴 때 널 값이 안 들어온다는 보증을 해주는 !!연산자.

널 값이 들어오면 오류 발생


나중 초기화를 위한 lateinit 키워드

1
lateinit var name: String

클래스에서 변수를 만들 때에 상황에 따라 나중에 따로 초기화를 수행하는 경우가 생긴다.

그럴 때 사용되는 키워드가 lateinit 키워드이며, lateinit 키워드를 사용하면 초기화 없이 변수 설정이 가능해짐


안전한 자료형 변환 as? 연산자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class As {

    fun As() {
        val animal: String = "호랑이"

        val value: Int = animal as? Int ?: 0 //Int 로 변환 할 수 없으므로 0으로 초기화된다.

        print(value)
    }
}

fun main(array: Array<String>){
    As().As()
}

as? 연산자는 자료형 변환에 대해 안전하게 변환 할 수 있도록 도와준다.

This post is licensed under CC BY 4.0 by the author.