日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kotlin学习笔记——过程控制和Range表达式

發布時間:2024/4/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kotlin学习笔记——过程控制和Range表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、if表達式

在kotlin中一切都是表達式,都可以返回一個值。所以if表達式也總是返回一個value。所以可以: var s = if (isExit) x else y 這樣我們就不需要java中那樣得三元符“?:”

2、when表達式

與java中的switch/case類似,但是要強大的多。這個表達式會匹配分支,如果有匹配的則運行右邊的表達式。
  • 對于默認的選項可以增加else分支(與java中的defualt類似)
  • 與java的switch/case不同的是,參數可以是任何類型,也可以是一個條件
  • 一個條件也可以是多個逗號分隔的值
如: when(x){0, 1 -> print("1")2 -> print("2")else -> {print("else")...} } 同樣作為表達式也可以返回一個值,如: val a = when(x){... } 當需要返回一個值時,由于必須要返回,所以必須覆蓋所有的可能性分支或實現else,否則不會被編譯成功。當不需要返回時,則不需覆蓋所有可能性。 更強大的是,我們可以檢測參數類型進行判斷,如: when(view){is TextView -> view.setText("test")is EditText -> toast("value is ${view.getText()}")else -> view.visibility = View.GONE } 通過is判斷后,參數會被自動轉型,所以不需要明確的做類型轉換。 它還可以檢測參數是否在一個數組范圍甚至是一個集合范圍內,如: val cost = when(x){in 0..10 -> "cheap"in 10..100 -> "regular"in specialValues -> "special"else -> "not raded" } 它甚至可以擺脫參數,代替if/else鏈,如: val res = when{x in 0..10 -> "cheap"y.contains("hello") -> "hello world"v is EditText -> v.getText()else -> "" } 注意:(1)使用when時參數可以為null,如果沒有匹配的分支則什么都不發生或執行else分支。 ? ? ? ? ?(2)如果有多個分支滿足條件,當匹配到第一個時即返回,其他匹配的分支不再執行

3、for循環

kotlin提供了很多集合的操作符可以使我們不必過多的使用for,但是for仍是有用的。 for(item in collection){... } 在for中我們也可以使用ranges,如: for(index in 0..parent.getChirldCount() - 1){... } 對于迭代一個Collection(array或list)的index,可以使用Collection的indices屬性,如 for(index in array.indices){... } 通過觀察源碼可以指定,indices是一個IntRange類型,它的值是0..size-1,所以說它是一個collection所有index的range。

4、while和do/while

這兩個不是特別常用,基本與java和上面的用法類似。

5、try和throw

在kotlin中幾乎一切都是表達式,都可以返回一個值,所以可以 val a = try{ ... }catch{ null } 或 fun do( ... ): Persion? = throw Expection() 注意:上面的例子可以看到,返回一個exception時,雖然與返回類型不相同也是可以的。

6、range

Range表達式使用一個“..”操作符,它是被定義實現了了一個RangeTo方法 if(i in 0..10){... } Range用于任何可以被比較的類型,但對于數字類型比較器會轉換為類似java的簡單代碼來避免額外開銷來優化它。 而且注意,數字類型的Range可以用于迭代,如: for(i in 0..10){.... } Range默認是自增長的,如果是for(i in 10..0)則不會做任何事情,這時可以使用downTo,如: for(i in 10 downTo 0){... } 我們還可以使用step來定義間隙,如: for(i in 1..4 step 2){... } 上面的代碼只會遍歷到1、3 如果想創建一個開區間,可以使用until,如: for(i in 0 until 4){... }

就等同于0..3,不包括最后的。

?

總結

以上是生活随笔為你收集整理的kotlin学习笔记——过程控制和Range表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。