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에 따라 라이센스가 부여됩니다.