티스토리 뷰
반응형
Author: 니용
Kotlin 언어에서는 각 타입별로 이 변수가 nullable 한 지 판별할 수 있는 함수를 제공해줍니다.
String
fun validate(input: String?) {
if(input.isNullOrBlank() || input.isNullOrEmpty()) {
println("String is blank or empty")
return false
}
else {
println("input is ${input}")
return true
}
}
String Type에서 기본적으로 제공해주는 함수입니다. 객체가 null이거나 빈 객체면(혹은 "")만 가지고 있다면 false를 반환합니다.
Generic
fun <T> printHashcode(generic: T) {
println(generic?.hashCode())
}
fun main(args: Array<String>) {
printHashcode(null)
}
Generic Type은 무조건 nullable입니다. 기본적으로 ?를 제공해주기 때문에 함수 내부에서 null check를 해주어야 에러가 나지 않습니다. 따라서 Non-null이 가능하게 하려면 타입을 지정해주어야 합니다.
fun <T:Any> predicate(t: T) { // Any의 제약조건이 걸림
println(t.hashCode())
}
fun main(args: Array<String>) {
predicate(null)
}
Collection
아직 Collection을 다루어보지 않았지만 사용 방법은 Java와 똑같습니다.
val list: List<Int?> = listOf(1, null, 3, 4, 5, null)
val filtered: List<Int> = list.filterNotNull()
print(filtered) // 1, 3, 4, 5
기본적으로 제공하는 함수 중 filterNotNull이 있습니다.
let 함수
Kotlin에서는 not null의 경우 구문을 실행시켜주는 let이라는 함수가 있습니다. 람다식의 일부로 자신의 receiver 객체를 람다식 내로 전달해줍니다.
fun printIfNotNull(str: String) {
print("${str} is printed")
}
fun main(args: Array) {
var niyo: String? = "Niyo"
niyo?.let { printIfNotNull(it) } // Niyo is printed
niyo?.let { str -> printIfNotNull(str) } // Niyo is printed
niyo = null
niyo?.let { printIfNotNull(it) } // pass
}
위 경우 Exception이 나지 않지만 마지막에 호출된 .let 함수는 스킵됩니다.
반응형
'Server' 카테고리의 다른 글
Kotlin의 상속성과 다형성 (0) | 2020.07.03 |
---|---|
[Java] Files를 사용하여 입력하기 (0) | 2020.07.02 |
Kotlin의 Pair와 Triple (0) | 2020.07.02 |
[Kotlin] MongoDB JPA 사용하기 (2) | 2020.06.30 |
MongoDB 설치하기 (0) | 2020.06.30 |
Kotlin의 lateinit과 Nullable (2) (0) | 2020.06.30 |
댓글
공지사항