Kotlin 기초 #4 Null Safety, 지연 함수
7595 단어 Kotlin기초강의Kotlin기초강의
빠르게 진도 나가는 Kotlin 기초강의 3번째 시간입니다~
💕 1. Nullable
자바에서는 널을 넣어도 상관없었다.
String pongPong = "퐁퐁"
pongPong = null
그만큼 위험하기도 했는데 null이 잘들어가는 만큼 Null Pointer Exepction이 자주났다.🤣🤣
다음껄 확인해보자
var myName:String = "퐁퐁"
myName = null //에러
똑같은 구문이지만 에러가 난다. Kotlin에선 Null을 받으려면 ?를 써야한다.
//nullable이다.
var myName:String? = "퐁퐁"
myName = null //에러
🚲 2. Safe Call
이제 SafeCall을 알아보자.
SafeCall은 Null이 아닐때만 액션을 취할수있게 해준다.
val str:String? = null
val upper = str?.toUpperCase()
var number:Int? = null
var result = number?.plus(37)
Null값을 가지고 있기때문에 toUpperCase() , plus가 동작하지 않는다.
🐱🏍 3. Elvis Expression
?가 Elvis머리와 같다고 탄생한 Elvis Expression이다.
val str:String? = null
//Elvis Expression
val upper = str?.toUpperCase() ?: "초기화 하세요!"
var result = number?.plus(37) ?: 51
만약 Null이 들어올경우 , ?: 뒤가 값이되어 NullPointer를 못하게 막는다.
🐱💻 4. lateinit
//지연초기화
// lateinit var 변수명:타입
//변수가 아닌 클래스에 많이 쓰인다.
lateinit var Person:String // 참조형에만 사용이 가능하다.
lateinit var myName:String? //에러. Null값이 허용되지않는다.
/
lateinit var person : Person // 초기화를 지연시켰다.
person = Person() //이제 초기화 시켰다. 메모리에 올라감.
person.address = "취킨"
class Person{
var name = ""
var age = ""
var address =""
var tel = ""
}
🚗 5. lazy
//값이 바뀌지않는 초기화: 읽기전용
val age by lazy{Person}
val hong : Int by lazy {
println("아프리카 태생 국민이")
100
}
fun main() {
val account = Account()
println(account.balance)
println(account.balance)
}
//ㅣlazy 의 {}은 변수가 처음 사용될때 한번 호출되며, 마지막값이 초기값으로 할당
//아프리카 태생 국민이
//100
//100
Author And Source
이 문제에 관하여(Kotlin 기초 #4 Null Safety, 지연 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@vov3616/Kotlin-기초-3-Null-Safety저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)