본문으로 바로가기

4. Using nullable values and Checking for null

category Kotlin/Basic Syntax 2018. 5. 31. 15:08

** null 값이 발생할 경우 reference는 nullable로 명시되어야 한다.


** String 타입의 파라미터 'str'이 Integer로 변환되지 않는 경우(Integer를 포함하지 않는 경우)에 null을 반환



fun parseInt(str: String) : Int? {

    // ...

}

 


1. nullable 값을 반환하는 function


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
fun parseInt(str: String): Int? {
    return str.toIntOrNull()
}
 
fun printProduct(arg1: String, arg2: String) {
    val x = parseInt(arg1)
    val y = parseInt(arg2)
 
    // Using `x * y` yields error because they may hold nulls.
    if (x != null && y != null) {
        // x and y are automatically cast to non-nullable after null check
        println(x * y)
    }
    else {
        println("either '$arg1' or '$arg2' is not a number")
    }    
}
 
 
fun main(args: Array<String>) {
    printProduct("6""7")
    printProduct("a""7")
    printProduct("a""b")
}
cs


또는,


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
fun parseInt(str: String): Int? {
    return str.toIntOrNull()
}
 
fun printProduct(arg1: String, arg2: String) {
    val x = parseInt(arg1)
    val y = parseInt(arg2)
    
    // ...
    if (x == null) {
        println("Wrong number format in arg1: '$arg1'")
        return
    }
    if (y == null) {
        println("Wrong number format in arg2: '$arg2'")
        return
    }
 
    // x and y are automatically cast to non-nullable after null check
    println(x * y)
}
 
fun main(args: Array<String>) {
    printProduct("6""7")
    printProduct("a""7")
    printProduct("99""b")
}
cs