Kotlin 역할 영역 함수 let,run,also,apply,with,takeIf,takeUnless
13445 단어 kotlin
Kotlin 에 내 장 된 데이터 변환 에 사용 되 는 함 수 는 집합 연산 자 와 비슷 하지만 모든 대상 에 사용 할 수 있 습 니 다.
먼저 data 데이터 형식,자바 의 bean 대상 을 정의 합 니 다.
data class User(var id: Int, var name: String)
let 와 run
fun test1() {
val user = User(1001, "zhangyu")
//let run
//
// let ,run
val letResult = user.let {
user: User -> "let::${
user.javaClass}" }
println(letResult)//let::class com.zhangyu.testKotlin.User
// , it
val letResult2 = user.let {
"let::${
it.javaClass}" }
println(letResult2)//let::class com.zhangyu.testKotlin.User
// , user this
val runResult = user.run {
"run::${
this.javaClass}" }
println(runResult)//run::class com.zhangyu.testKotlin.User
}
also,apply,with
fun test2() {
val user = User(1001, "zhangyu")
//also apply
//
// ,
// also , apply
user
.also {
println("${
it.id}") //1001
}
.apply {
println(this.name) //zhangyu
}
.name = "liming"
.also {
println(it) //liming
}
.also {
println(user.name) // user.name zhangyu
}
println(user.name) //limingwi
//with ,
//with apply,
with(user) {
this.name = "with"
}
user.apply {
this.name = "apply"
}
}
takeIf 와 take Unless
fun test3() {
val user = User(1001, "zhangyu")
//takeIf takeUnless
//takeIf , false ,takeIf
//if a or b
val user1 = user
.takeIf {
it.id > 0 //true user( ),false
}
?.also {
println(it.name) //true
}
?: println(" ")//false
println(user1) //User(id=1001, name=zhangyu)
//if a or b
val user2 = user
.takeIf {
it.id < 0 true user( ),false
}
?.also {
println(it.name) //true
}
?: println(" ") //false
println(user2)//kotlin.Unit
//if b or a
user
.takeUnless {
it.id < 0
}
?.also {
println(" ") // false
}
?: println(user.name) // true
}
몇몇 고전적 인 용법
var paint = Paint()
.apply {
color = 0x000000
textSize = 30F
isAntiAlias = true
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 실험, 에피소드 1a String 의 중심에 있는 문자를 반환하는 메서드를 작성하려는 경우 Java에서 가장 좋은 옵션은 유틸리티 클래스를 정의하는 것입니다. Kotlin을 사용하면 을 통해 기존 클래스에 새 메서드를 추가할 수 있습...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.