반응형
아래와 같이 Person 이라는 class 가 있을 때,
data class Car(
var model: String? = null,
var price: Int? = null,
var brand: String? = null
) {
override fun toString(): String {
return "Car : [$model, $price, $brand]"
}
}
일반적으로 다음과 같이 초기화 합니다.
var car1: Car? = Car()
car1?.model = "x"
car1?.price = 50000000
car1?.brand = "tesla"
print(car1?.toString())
// Car : [x, 50000000, tesla]
apply
다음과 같이 사용할 수 있습니다.
val car2 = Car().apply {
model = "y"
price = 60000000
brand = "tesla"
val info = toString()
print(info)
// Car : [y, 60000000, tesla]
}
// car2 에 반영됨.
car2.price = 80000000
print(car2.toString())
// Car : [y, 80000000, tesla]
with
val car04 = Car("K", 100000000, "Tesla")
with(car04){
println(model) // K
println("price : $price") // price : 100000000
println(brand) // Tesla
println(toString()) // Car : [K, 100000000, Tesla]
price = 110000000
}
println(car04.toString()) // Car : [K, 110000000, Tesla]
반환을 할 필요가 없을 때 사용하긴 하지만 with 문 안에서 필드 값을 변경하면, 값이 실제로 변경됩니다.
let
만약 car 객체가 nullable로 선언되었다면, 아래와 같이 ? 를 계속해서 써줘야합니다.
var car00: Car? = null
// car00 = Car("U", 100, "tesla")
println("model = ${car00?.model}")
println("price = ${car00?.price}")
println("brand = ${car00?.brand}")
여기서 let 을 사용해 아래와 같이 사용할 수 있습니다.
var car00: Car? = null
car00 = Car("U", 100, "tesla")
car00?.let {
println(it.model) // U
print(it.toString()) // Car : [U, 100, tesla]
} ?: run {
print("car00 is null!")
}
var car00: Car? = null
// 아래 줄을 주석처리 하면, car00 은 null 이므로
// car00 = Car("U", 100, "tesla")
car00?.let {
println(it.model)
print(it.toString())
} ?: run {
print("car00 is null!") // car00 is null!
}
?:
fun getName(name: String?): String{
var userName = name?: "Unknown"
return userName
}
val user1 = getName(null)
print(user1)
// Unknown
728x90
반응형
'Android' 카테고리의 다른 글
[Kotlin] Fragment 사용하기 (0) | 2023.07.28 |
---|---|
[Kotlin] Android 에서 Retrofit2 사용하여 API 호출하기 (0) | 2023.07.25 |
[Kotlin] 리니어 레이아웃(LinearLayout) 예제 (0) | 2023.07.25 |
[Kotlin] Android Java 와 Kotlin 몇가지 문법 비교 (0) | 2023.07.24 |
[Kotlin] class static 변수 사용하기 companion object (0) | 2023.07.24 |
댓글