빠르게 진도 나가는 Kotlin 기초강의 3번째 시간입니다~
자바에서는 널을 넣어도 상관없었다.
String pongPong = "퐁퐁"
pongPong = null
다음껄 확인해보자
    var myName:String = "퐁퐁"
    myName = null //에러
똑같은 구문이지만 에러가 난다. Kotlin에선 Null을 받으려면 ?를 써야한다.
	//nullable이다.
    var myName:String? = "퐁퐁"
    myName = null //에러
이제 SafeCall을 알아보자.
SafeCall은 Null이 아닐때만 액션을 취할수있게 해준다.
val str:String? = null
val upper = str?.toUpperCase()
var number:Int? = null 
var result = number?.plus(37)
?가 Elvis머리와 같다고 탄생한 Elvis Expression이다.
val str:String? = null
//Elvis Expression
val upper = str?.toUpperCase() ?: "초기화 하세요!"
var result = number?.plus(37)  ?: 51
        //지연초기화
        // 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 = ""
    }
        //값이 바뀌지않는 초기화: 읽기전용
       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