Kotlin常用操作符總結

常用操作符

1尺棋、? 操作符</br>

表示對象可能為空简僧,或者對象可以為空

//在變量之后加上 ?唆途,則代表變量可以為空
var name: String? = null

//加在函數返回值類型后邊硬贯,表示函數方法返回值可以為空
fun getName(): String? {
    ....
}

//如果 b非空焕襟,就返回 b.length ,否則返回 null饭豹,這個表達式的類型是 Int? 鸵赖。
//相當于 if not null
b?.length 

2、 ?: 操作符</br>

相當于 if null 執(zhí)行一個語句

val values = ……
// 如果 values["email"] 為null墨状,則執(zhí)行 throw IllegalStateException("Email is missing!")
// 反之執(zhí)行 values["email"]
val email = values["email"] ?: throw IllegalStateException("Email is missing!")

3卫漫、 !! 操作符</br>

當對象為null,則拋出空指針(NPE)異常:</br>

val l = b!!.length

4肾砂、 .. 操作符</br>

x .. y  
//從x 到y(tǒng),并且包含x宏悦、y值镐确,是一個閉區(qū)間運算符
//相對的 until 則是半閉區(qū)間運算符,包含 x 不包含 y

5饼煞、 in 操作符</br>

in 表示包含在區(qū)間中源葫, !in 則不在區(qū)間中

if(i in 1..10){ //相當于 i >= 1 && i<= 10
    
}

for(i in 1 until 10)
相當于
for(i = 1,i < 10,i++)

6、 == 與 === 操作符</br>

== 判斷值是否相等砖瞧,</br>
=== 判斷引用是否相等

7息堂、 :: 操作符</br>

得到類的 class 對象,創(chuàng)建一個成員引用或者一個類引用 </br>

1块促、得到類的class
val c = MyClass::class

2荣堰、函數引用
//聲明一個函數
fun isOdd(value: Int) = value%2 != 0
//作為函數類型值傳遞給另外一個函數
val numbers = listOf(1,2,3)
println(numbers.filter(::isOdd))
//運行結果
[1,3]

如果我們需要使用類的成員函數或擴展函數,它需要是限定的竭翠,例如 String::toCharArray振坚。

整體理解就是對函數或者類的一個引用,在上下文中明確函數返回類型斋扰,也可以使用該操作符重載函數

8渡八、 @ 操作符</br>

  • 引入一個注解
//聲明
annotation class Fancy
//用法
@Fancy class Foo {
    @Fancy fun baz(@Fancy foo: Int): Int {
        return (@Fancy 1)
    }
}
  • 引入或者引用一個循環(huán)標簽
標簽的格式為標識符后跟 @ 啃洋,例如:abc@、fooBar@
1屎鳍、跳出一個雙層循環(huán)
loop@ for (i in 1..100) {
    for (j in 1..100) {
        if (……) break@loop
    }
}

相當于在 return宏娄、continue、break 關鍵詞之后加上 @label逮壁,則跳轉結束到 @label 處

return@a 1
//當要返一個回值的時候孵坚,解析器優(yōu)先選用標簽限制的 return,
//相當于 從標簽 @a 返回 1
  • 限定 this 的類型
class A { // 隱式標簽 @A
    inner class B { // 隱式標簽 @B
        fun Int.foo() { // 隱式標簽 @foo
            val a = this@A // A 的 this
            val b = this@B // B 的 this

            val c = this // foo() 的接收者貌踏,一個 Int
            val c1 = this@foo // foo() 的接收者十饥,一個 Int

            val funLit = lambda@ fun String.() {
                val d = this // funLit 的接收者
            }


            val funLit2 = { s: String ->
                // foo() 的接收者,因為它包含的 lambda 表達式
                // 沒有任何接收者
                val d1 = this
            }
        }
    }
}
  • 引用外部超類
class Bar : Foo() {
    override fun f() { /* …… */ }
    override val x: Int get() = 0
    
    inner class Baz {
        fun g() {
            super@Bar.f() // 調用 Foo 實現(xiàn)的 f()
            println(super@Bar.x) // 使用 Foo 實現(xiàn)的 x 的 getter
        }
    }
}

-> 操作符

  • 分隔在函數類型中的參數類型與返回類型聲明
詳細具體可以參考
http://www.kotlincn.net/docs/reference/lambdas.html#%E5%87%BD%E6%95%B0%E7%B1%BB%E5%9E%8B

1祖乳、(A逗堵,B)-> C 
    表示 接收的類型分別是 參數類型A、參數類型B眷昆、返回值類型C 的值

  • 分隔 when 表達式分支的條件與代碼體
when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> { // 注意這個塊
        print("x is neither 1 nor 2")
    }
}

參考</br>
http://www.kotlincn.net/docs/reference/idioms.html</br>
https://www.kotlincn.net/docs/reference/keyword-reference.html</br>
https://blog.csdn.net/dangnianmingyue_gg/article/details/75305504

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末蜒秤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子亚斋,更是在濱河造成了極大的恐慌作媚,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帅刊,死亡現(xiàn)場離奇詭異纸泡,居然都是意外死亡,警方通過查閱死者的電腦和手機赖瞒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門女揭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人栏饮,你說我怎么就攤上這事吧兔。” “怎么了袍嬉?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵境蔼,是天一觀的道長。 經常有香客問我伺通,道長箍土,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任泵殴,我火速辦了婚禮涮帘,結果婚禮上,老公的妹妹穿的比我還像新娘笑诅。我一直安慰自己调缨,他們只是感情好疮鲫,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弦叶,像睡著了一般俊犯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伤哺,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天燕侠,我揣著相機與錄音,去河邊找鬼立莉。 笑死绢彤,一個胖子當著我的面吹牛,可吹牛的內容都是我干的蜓耻。 我是一名探鬼主播茫舶,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼刹淌!你這毒婦竟也來了饶氏?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤有勾,失蹤者是張志新(化名)和其女友劉穎疹启,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體蔼卡,經...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡喊崖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了雇逞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贷祈。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喝峦,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情呜达,我是刑警寧澤谣蠢,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站查近,受9級特大地震影響眉踱,放射性物質發(fā)生泄漏。R本人自食惡果不足惜霜威,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一谈喳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧戈泼,春花似錦婿禽、人聲如沸赏僧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淀零。三九已至,卻和暖如春膛壹,著一層夾襖步出監(jiān)牢的瞬間驾中,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工模聋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留肩民,地道東北人。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓链方,卻偏偏與公主長得像持痰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子侄柔,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內容