** 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 |
'Kotlin > Basic Syntax' 카테고리의 다른 글
6. Using for loop & while loop & when expression (0) | 2018.05.31 |
---|---|
5. Using Type checks & Automatic casts (0) | 2018.05.31 |
3. Using String templates & Conditional expressions (0) | 2018.05.31 |
2. Defining Variables & Comments (0) | 2018.05.31 |
1. Defining Packages & Functions (0) | 2018.05.31 |