1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯網營銷解決方案
      Kotlin中常見的符號有哪些

      這篇文章給大家分享的是有關Kotlin中常見的符號有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

      網站建設哪家好,找創(chuàng)新互聯!專注于網頁設計、網站建設、微信開發(fā)、微信小程序、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯還提供了扎魯特旗免費建站歡迎大家使用!

      Kotlin是一門靜態(tài)語言,支持多種平臺,包括移動端、服務端以及瀏覽器端,此外,Kotlin還是一門融合了面向對象與函數式編程的語言,支持泛型、安全的空判斷,并且Kotlin與Java可以做到完全的交互。

      現在介紹Kotlin的文章已經是鋪天蓋地,大部分都是從Kotlin的基本數據類型介紹起,本文不想重復這樣的事情,這里從另一面來開始,我們來看看Kotlin中的各種符號。

      Kotlin中常見的符號有哪些

      $符合和多行輸入符

      println("itemB:$itemB")
      
      //字符串模板
      var userInfo = "name:${user.name}, age:$age"
      
      //三引號的形式用來輸入多行文本
      val str = """ 
        one
        two
          """
      //等價于     
      val str = "one\ntwo"

      三引號之間輸入的內容將被原樣保留,之中的單號和雙引號不轉義,其中的不可見字符比如/n和/t都會被保留。

      ?問號

      表示這個對象可能為空

      //在變量類型后面加上問號,代表該變量是可空變量 
      var name: String? = "zhangsan"
      /**
       * 如果str不能轉為Int類型,則返回null
       */
      fun parseInt(str: String): Int? { 
       // (代碼略)
      }

      b?.length //如果 b非空,就返回 b.length ,否則返回 null,這個表達式的類型是 Int? 。

      Elvis操作符(?:)

      如果r非空,我使用它;否則使?某個非空的值 x ”:

      val l: Int = if (b != null) b.length else -1

      除了完整的 if-表達式,這還可以通過 Elvis 操作符表達:

      val l = b?.length ?: -1

      如果 ?: 左側表達式非空,elvis操作符就返回其左側表達式,否則返回右側表達式。請注意,當且僅當左側為空時,才會對右側表達式求值。

      !! 操作符

      對于NPE 愛好者,我們可以寫 b!! ,這會返回一個非空的 b 值 或者如果 b 為空,就會拋出一個 NPE 異常:

      val l = b!!.length

      因此,如果你想要一個 NPE,你可以得到它,但是你必須顯式要求它,否則它不會不期而至。

      ==號與===號

      ==判斷值是否相等,===判斷值及引用是否完全相等。

      val num: Int = 128;
      val a:Int? = num
      val b:Int? = num
      println(a == b)
      print(a === b)

      ..符號

      Kotlin中有區(qū)間的概念,區(qū)間表達式由具有操作符形式 .. 的 rangeTo 函數輔以 in 和 !in 形成。 區(qū)間是為任何可比較類型定義的,但對于整型原生類型,它有一個優(yōu)化的實現。以下是使用區(qū)間的一些示例:

      if (i in 1..10) { // 等同于 1 <= i && i <= 10
        println(i)
      }
      //使用until函數,創(chuàng)建一個不包括其結束元素的區(qū)間
      for (i in 1 until 10) {  // i in [1, 10) 排除了 10
         println(i)
      }
      
      for (i in 1..4) print(i) // 輸出“1234”
      
      for (i in 4..1) print(i) // 什么都不輸出

      如果你想倒序迭代數字呢?也很簡單。你可以使用標準庫中定義的 downTo() 函數

      for (i in 4 downTo 1) print(i) // 輸出“4321”

      step()函數,可以指定任意步長

      for (i in 1..4 step 2) print(i) // 輸出“13”
      
      for (i in 4 downTo 1 step 2) print(i) // 輸出“42”

      _(下劃線)

      data class Book(var id: Int, var name: String)

      上面的示例中,Book聲明了 id,name兩個變量。解構時如果只需要id這一個變量時,可以這么做:

      val book = Book(1, "英語")
      val (id, _) = book

      ::符號

      //得到類的Class對象
      startActivity(Intent(this@KotlinActivity, MainActivity::class.java))
      
      //內聯函數和reified后續(xù)介紹
      inline fun  Gson.fromJson(json:String):T
      {
        return fromJson(json, T::class.java)
      }

      方法引用

      var setBook = setOf("hello", "hi", "你好")
      //  setBook.forEach { print(it)}
        setBook.forEach(::print)

      @符號

      1、限定this的類型

      class User {
        inner class State{
          fun getUser(): User{
            //返回User
            return this@User
          }
          fun getState(): State{
            //返回State
            return this@State
          }
        }
      }

      2、作為標簽

      跳出雙層for

      loop@ for (itemA in arraysA) {
         var i : Int = 0
         for (itemB in arraysB) {
           i++
           if (itemB > 2) {
             break@loop
           }
      
           println("itemB:$itemB")
         }
      
      }

      命名函數自動定義標簽:

      fun fun_run(){
        run {
          println("lambda")
        }
        var i: Int = run {
          return@run 1
        }
        println("$i")
        //匿名函數可以通過自定義標簽進行跳轉和返回
        i = run (outer@{
          return@outer 2
        })
        println(i)
      }

      從forEach函數跳出

      fun forEach_label(ints: List)
      {
        var i =2
        ints.forEach {
          //forEach中無法使用continue和break;
      //    if (it == 0) continue //編譯錯誤
      //    if (it == 2) /*break //編譯錯誤 */
          print(it)
        }
         run outer@{
           ints.forEach {
             if (it == 0) return@forEach //相當于在forEach函數中continue,實際上是從匿名函數返回
             if (it == 2) return@outer //相當于在forEach函數中使用break,實際上是跳轉到outer之外
           }
         }
      
        if (i == 3)
        {
          //每個函數的名字代表一個函數地址,所以函數自動成為標簽
          return@forEach_label //等同于return
        }
      }

      {}符號

      這里指的是lambda表達式的符號。

      // 一個參數
      var callback: ((str: String) -> Unit)? = null
      callback = { println(it)}
      // 判斷并使用
      callback?.invoke("hello")
      
      //兩個參數
      var callback2: ((name: String, age: Int) -> Unit)? = null
      callback2 = { hello: String, world: Int -> println("$hello's age is $world") }
      callback2?.invoke("Tom", 22)
      
      var callback3 :((num1:Int, num2: Int)->String)? = null
      //類型可以推斷
      callback3 = { num1, num2 ->
        var res:Int = num1 + num2
        res.toString()
      }
      
      println(callback3?.invoke(1, 2))

      kotlin中{}里面整個是lambda的一個表達式,而java8中{}部分只是lambda表達式的body部分。

      感謝各位的閱讀!關于“Kotlin中常見的符號有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


      網站名稱:Kotlin中常見的符號有哪些
      URL網址:http://ef60e0e.cn/article/peddsc.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        金坛市| 高陵县| 新安县| 策勒县| 隆化县| 台中县| 含山县| 阳城县| 余庆县| 宜章县| 屏东县| 彭水| 兴城市| 瑞金市| 视频| 德阳市| 江油市| 如皋市| 武宣县| 南岸区| 绍兴县| 临澧县| 纳雍县| 佛坪县| 盘锦市| 航空| 乌兰察布市| 昌平区| 灵石县| 清镇市| 隆安县| 呈贡县| 南城县| 扶风县| 休宁县| 恩施市| 溆浦县| 新巴尔虎左旗| 兰西县| 金门县| 张掖市|