Kotlin

내일배움캠프 12.21 TIL

공부처음하는사람 2023. 12. 22. 20:58

lazy

  • lazy 사용예시

    fun main(){
      var s1 = Student()
      s1.name = "참새"
      s1.displayInfo()
    
      s1.age = 10
      s1.displayInfo()
    }
    

class Student {
lateinit var name:String
var age:Int = 0
val address: String by lazy {
println("address 초기화")
"seoul"
}

fun displayInfo() {
    println("이름은: ${name} 입니다.")
    println("나이는: ${age} 입니다.")
    println("주소는: ${address} 입니다.")
}

}


- by lazy 후 값을 입력해주는 방법으로 사용한다.
- 사용하는 시점에 값을 초기화 하고 대입한다.
- 출력값
![](https://velog.velcdn.com/images/lazzzykim/post/090ab8ec-7bec-42eb-abce-011a930827a0/image.png)


# Null Safety

```kotlin
fun main() {
    var s = Student()
    s.name = "참새"
    s.address = "서울"
    s.displayInfo()
}

class Student {
    lateinit var name: String
    var address: String? = null

    fun displayInfo() {
        println("이름은: ${name} 입니다")
        println("주소는: ${address} 입니다")
    }
}
  • String?은 널을 허용한다는 뜻이다. adress에 서울이 들어가지 않으면 null값을 출력한다.

세이프콜

fun main(){
    var s = Student()
    s.name = "참새"
    s.displayAddressLength()

    s.address = "서울"
    s.displayInfo()
}

class Student {
    lateinit var name:String
    var address:String? = null

    fun displayInfo() {
        println("이름은: ${name} 입니다")
        println("주소는: ${address} 입니다")
    }

    fun displayAddressLength() {
        println("주소의 길이는: ${address?.length} 입니다")
    }
}
  • 세이프콜 (?.)은 널이 아닐경우에 참조하는 메서드를 실행한다.
  • 반대로 null일 경우엔 실행되지 않음

엘비스 연산자

fun main(){
    var s = Student()
    s.name = "참새"
    s.displayAddressLength()

    s.address = "서울"
    s.displayInfo()
}

class Student {
    lateinit var name:String
    var address:String? = null

    fun displayInfo() {
        println("이름은: ${name} 입니다")
        println("주소는: ${address} 입니다")
    }

    fun displayAddressLength() {
        println("주소의 길이는: ${address?.length ?: "초기화하세요"} 입니다")
    }
}
  • null 일 경우에 "초기화하세요" 라는 문구가 출력이 되게 할 수있다.

'Kotlin' 카테고리의 다른 글

확장 함수  (1) 2023.12.23
고차함수와 람다식  (1) 2023.12.23
스코프 함수  (0) 2023.12.22
내일배움캠프 12.20 TIL  (0) 2023.12.22
Set, Map  (0) 2023.12.22