亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Kotlin新手基礎學習之Elvis操作符

2024-07-21 23:03:41
字體:
來源:轉載
供稿:網友

Kotlin簡介

Kotlin是一門與Swift類似的靜態類型JVM語言,由JetBrains設計開發并開源。與Java相比,Kotlin的語法更簡潔、更具表達性,而且提供了更多的特性,比如,高階函數、操作符重載、字符串模板。它與Java高度可互操作,可以同時用在一個項目中。

kotlin 語言特性

  kotlin中一切皆為對象

  • 沒有像java一般的基本數據類型,數值類型為:Int, Float, Double等
  • 函數也是對象,可作為參數和返回值
  • 自然就會有高階函數和lambda

語法特性及規范

  • 語句結尾不用分號
  • 使用駝峰命名,盡量避免下劃線
  • public函數應當有說明文檔
  • lambda中花括號內前后都應該有空格

Elvis 操作符的優先級

首先要注意到,Elvis 操作符的優先級是比較低的,特別是比加減乘除的運算符低,混合運算時一定要記得加上括號。比如:

fun <T> Iterable<T>.contentHashCode(): Int { return fold(1) {  hash, element ->  hash * 31 + (element?.hashCode() ?: 0) }}

這里如果不用括號將 element?.hashCode() ?: 0 括起來,編譯器就會認為這句表達式是 (hash * 31 + element?.hashCode()) ?: 0,出現編譯錯誤。

與 ?. 配合使用時的問題

Elvis 操作符與安全調用符 ?. 配合使用時,一定要考慮到安全調用符前后是否為空,否則就會帶來流程控制混亂的問題。對于任何一個下列的表達式:

val v = a?.b ?: c

因為 ?. 的優先級比 ?: 高,首先計算 a?.b,按照安全調用符的規則,如果 a == null 則結果為 null,執行 c,但如果 a.b == null,也會執行 c。也就是說,它的執行邏輯是這樣的:

var temp = if(a != null) a.b else nullval v = if(temp != null) temp else c

它等價于:

val v = if(a == null || a.b == null) c else a.b

實際使用時一定要注意 ?. 前后是否都可能為 null。

?: 與流程控制語句的搭配使用

我發了一個 Kotlin 寫的前序遍歷二叉樹的 Gist,地址在這里:PreOrderTraversing.kt,整個項目:DataStructureLearning-Kotlin

非遞歸遍歷二叉樹的代碼如下:

private fun preOrderLoop( root: Node? = this.root, list: MutableList<Int> = mutableListOf()): List<Int> { val stack = ArrayDeque<Node>() stack.push(root ?: return list) while (stack.isNotEmpty()) {  val nodeNow = stack.pop()!!  list += nodeNow.value  nodeNow.right?.let { stack.push(it) }  nodeNow.left?.let { stack.push(it) } } return list}

第二句很有意思。ArrayDeque 不能容納 null,一旦插入 null 就會拋出 NPE,而我們的函數要求 root 為 null 時返回一個空的 List,所以這里 push() 的參數寫成 root ?: return list,這句代碼的邏輯如下:

if(root == null) return liststack.push(root)

此外,Elvis 還可以配合 break 和 continue 來控制循環流程。

改良 Elvis

Elvis 操作符很方便,但只能連接表達式,我們可以寫一個擴展函數來作為加強版的 Elvis 操作符。

inline infix fun <T : Any> T?.ifNull(block: (T?) -> T): T { if (this == null) {  return block(this) } return this}

使用方式:

val file = java.io.File("C://FakeFile")val parent = file.parent ifNull { // do something here}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到kotlin教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久琪琪电影院| 91免费综合在线| 伊人一区二区三区久久精品| 亚洲精品福利免费在线观看| 国产精品视频中文字幕91| 欧美黄色片免费观看| 91日本视频在线| 日韩在线观看你懂的| 国产精欧美一区二区三区| 欧美国产精品人人做人人爱| 日韩在线观看免费| 欧美日韩免费网站| 狠狠色香婷婷久久亚洲精品| 91麻豆国产语对白在线观看| 成人国内精品久久久久一区| 国产一区二区三区三区在线观看| 丁香五六月婷婷久久激情| 中文字幕亚洲第一| 91av在线国产| 欧洲美女7788成人免费视频| 成人欧美一区二区三区黑人孕妇| 国产精品午夜视频| 亚洲国产另类 国产精品国产免费| 成人黄色在线免费| 日韩a**站在线观看| 亚洲人成电影在线播放| 亚洲成人黄色网| 欧美一区二三区| 欧美精品一区三区| 国产日韩欧美自拍| 国产999在线观看| 一区二区三区四区视频| 国产精品天天狠天天看| 久久精品视频在线观看| 欧美另类暴力丝袜| 中日韩午夜理伦电影免费| 亚洲在线免费观看| 国产精品∨欧美精品v日韩精品| 亚洲大胆人体在线| 日韩美女在线观看一区| 国产视频999| 国产99久久精品一区二区永久免费| 欧美中文在线观看国产| 精品国内产的精品视频在线观看| 国产成人av网| 久久精品国产99国产精品澳门| 欧美猛交ⅹxxx乱大交视频| 亚洲一区二区在线播放| 久久九九有精品国产23| 精品五月天久久| 91精品一区二区| 久久久久久网站| 91po在线观看91精品国产性色| 欧美精品在线视频观看| 亚洲一区二区三区四区视频| 国产成人精品免费久久久久| 国产精品成人国产乱一区| 欧美亚洲另类激情另类| 中文字幕亚洲图片| 亚洲国产免费av| 国产一区二区三区久久精品| 色妞欧美日韩在线| 精品久久在线播放| 91高清在线免费观看| 亚洲精品一区二区在线| 欧洲午夜精品久久久| 日韩欧美高清视频| 精品国产依人香蕉在线精品| 精品国偷自产在线| 成人有码视频在线播放| 欧美精品手机在线| 美女精品视频一区| 亚洲精品国产精品自产a区红杏吧| 国产在线播放不卡| 欧美中在线观看| 91影院在线免费观看视频| 亚洲视频综合网| 欧美日韩精品在线| 琪琪第一精品导航| 国产精品成人aaaaa网站| 日韩精品视频在线观看网址| 在线日韩第一页| 精品久久久久久久久久国产| 国产精品露脸av在线| 久久久久在线观看| 久久国产精品免费视频| 亚洲欧美日韩另类| 日韩av在线免费看| 欧美午夜女人视频在线| 欧美日韩国产在线播放| 亚洲一级黄色av| 日本精品一区二区三区在线| 久久精品精品电影网| 青青草国产精品一区二区| 国产欧美 在线欧美| 麻豆乱码国产一区二区三区| 国产精品自产拍在线观| 亚洲专区国产精品| 国产日韩在线视频| 久久久久久网站| 亚洲国产高清高潮精品美女| 亚洲第一av在线| 亚洲激情自拍图| 亚洲aa中文字幕| 中文字幕精品在线视频| www.午夜精品| 久久不射电影网| 亚洲大胆美女视频| 伊人伊人伊人久久| 亚洲一区二区三区在线免费观看| 欧美激情一区二区三区成人| 97欧美精品一区二区三区| 国产日韩亚洲欧美| 欧美激情一区二区三区成人| 国产91精品不卡视频| 欧美亚洲午夜视频在线观看| 亚洲一区二区自拍| 69av视频在线播放| 国产ts一区二区| 久久久久久亚洲精品| 亚洲女成人图区| 91精品久久久久久久久久另类| 日韩中文字幕网站| 在线国产精品视频| 亚洲日韩中文字幕| 欧美成人午夜免费视在线看片| 中文字幕亚洲欧美日韩高清| 日韩av片免费在线观看| 国产亚洲美女精品久久久| 日本在线观看天堂男亚洲| 亚洲一区二区福利| 久久成人精品视频| 亚洲成色777777在线观看影院| 一本色道久久88综合亚洲精品ⅰ| 欧美限制级电影在线观看| 综合国产在线视频| 都市激情亚洲色图| 久久久久久网站| 日韩精品中文字幕在线播放| 18一19gay欧美视频网站| 亚洲国产精品va在线观看黑人| 色综合久久天天综线观看| 91在线免费网站| 日韩精品中文在线观看| 国产精品h在线观看| 国产欧美日韩精品在线观看| 久久九九精品99国产精品| 中文字幕国内精品| 欧美美女18p| 午夜伦理精品一区| 日韩国产中文字幕| 欧美一级在线亚洲天堂| 亚洲香蕉av在线一区二区三区| 中文精品99久久国产香蕉| 亚洲精品第一页| 欧美日韩国产第一页| 国产精品久久久久久一区二区| 狠狠躁夜夜躁久久躁别揉| 伊人亚洲福利一区二区三区| 国产91精品最新在线播放| 国产亚洲欧洲高清一区| 高清一区二区三区四区五区| 精品无人国产偷自产在线| 久久久久久久久国产|