<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### **?.(安全調用符)** 安全調用運算符“?.”:它允許你把一次null檢查和一次方法調用合并成一個操作。 Kotlin提供了一個安全調用符“?.”,**專門用于調用可空類型變量中的成員方法或屬性**,其語法格式為“變量?.成員”。其作用是判斷變量是否為null,如果不為null才調用變量的成員方法或者屬性。 安全調用符的出現解決了什么問題? 可空類型變量不能直接使用,但是直接使用非空判斷又過于復雜,所以可以使用安全調用符。 **怎么使用安全調用符**?之前的結構是【變量.方法】,現在的結構是【**變量?.方法**】。 使用了安全調用符,代碼執行邏輯是怎樣的? **變量不會NULL的時候,才去執行方法,所以不會報空指針。變量為NULL的時候,【變量?.方法】的結果為NULL**,參考下圖: ![](https://i.loli.net/2019/04/21/5cbb5da74d290.png) **其實可以把安全調用符看做是if非空判斷的簡寫形式**, 也就是`varresult = if (age != null) age.toInt() else null`等同于`var result = age?.toInt()`。 如果age變量為null,請使用安全調用符參考代碼: ~~~ fun main(args: Array<String>) { //可空類型變量 var age: String? = null //使用安全調用符 val result = age?.toInt() //打印結果 println(result) //隨便打印一句話 println("安全調用符后面的一句話") } ~~~ 運行結果 ``` null 安全調用符后面的一句話 Process finished with exit code 0 ``` 如果age變量不為null,使用安全調用符,參考代碼: ~~~ fun main(args: Array<String>) { //可空類型變量 var num: String? = "18" //使用安全調用符 val res = num?.toInt() //打印結果 println(res) //隨便打印一句話 println("安全調用符后面的一句話") } ~~~ 運行結果 ``` 18 安全調用符后面的一句話 Process finished with exit code 0 ``` 安全調用不光可以調用方法, 也能用來訪問屬性,同時鏈接多個安全調用 ~~~ /** * 安全調用符(?.) * 一、使用安全調用處理可空屬性 * 二、鏈接多個安全調用 */ class Employee(val name:String,val manager:Employee?) fun managerName(employee: Employee):String?=employee.manager?.name class Address(val streetAddress:String,val zipCode:Int,val city:String,val country:String) class Company(val name:String,val address: Address?) class Person(val name: String,val company: Company?) fun Person.countryName():String{ val country=this.company?.address?.country return if (country !=null) country else "Unknown" } fun main(args: Array<String>) { //一、使用安全調用處理可空屬性 val ceo=Employee("Big Boss",null) val developer=Employee("Bob Smith",ceo) println(managerName(developer)) println(managerName(ceo)) //二、鏈接多個安全調用 val person=Person("Dmitry",null) println(person.countryName()) } ~~~ 運行結果 ``` Big Boss null Unknown Process finished with exit code 0 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看