kotlin中你可能忽略的一些小技巧

寫之前先放張圖

DFD16CDA-8031-4A67-9206-80004DAAF416.png

看來使用kotlin真的是大勢所趨溺欧,自從i/o大會以后相信大家或多或少的都接觸過kotlin了暑认,kotlin的優(yōu)點很多,簡潔召衔,安全铃诬,它幾乎可以用在現(xiàn)在java使用的任何地方;服務(wù)端開發(fā)苍凛,android應(yīng)用......趣席,kotlin可以很好的和所有現(xiàn)存的java庫和框架一起工作,這里我們講一下在開發(fā)中可能被忽視的一些實用的小技巧醇蝴。

一宣肚、函數(shù)
---------------(java中帶返回值的函數(shù))---------------

public int max(int a, int b) {
if (a > b)
return a;
return b;
}

---------------(kotlin)---------------

fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}

可以看出來kotlin的寫法已經(jīng)比java簡潔些,但其實可以更加的簡潔:

fun max(a: Int, b: Int) = if (a > b) a else b

這就完了悠栓?是的霉涨,只要一行就搞定了,為什么不用聲明返回類型惭适?我們稱這種函數(shù)為表達(dá)式體函數(shù)笙瑟,編譯器回分析作為函數(shù)體的表達(dá)式,并把他的類型作為函數(shù)的返回類型癞志,即使沒有顯示的寫出來往枷,這種分析被稱為類型推導(dǎo)。這里注意一下今阳,只有表達(dá)式函數(shù)的返回類型可以省略师溅。

二、字符串模版

fun main() {
val name = "kotlin"
println("hello,$name")
}

在代碼中你聲明了一個變量name盾舌,并且在后面的字符串面值中使用了它,kotlin可以讓你在字符串中引用局部變量蘸鲸,只要在變量名前加上$這樣等價于java中的(“hello”+name)妖谴,效率雖然一樣,但是更緊湊!
如果我要在字符串中使用$字符怎么辦膝舅,你要對它轉(zhuǎn)義:println("$x")會打印$x嗡载,并不會把x解釋成變量的引用。
還可以在雙引號中直接嵌套雙引號仍稀,只要它們處在某個表達(dá)式的范圍內(nèi)(花括號內(nèi))

fun main(args: Array<String>) {
println("hello,${if (args.size > 0) args[0] else "someone"}")
}

三洼滚、 使用“in”檢查集合和區(qū)間的成員
使用過kotlin的同學(xué)應(yīng)該都知道在kotlin中for循環(huán)有些不一樣,更類似于foreach
fun main(args: Array<String>) {
for (a in args.indices){
println(a)
}
}
使用in運算符來檢查一個值是否在區(qū)間中技潘,比如:

fun isLetter(c: Char) = c in 'a'..'z' || c in 'A'..'Z'

println(isLetter(s))
true
檢查傳入的字符是否在az或者AZ之間遥巴,是不是很方便,那如果反過來呢享幽?

fun isNotDigit(c: Char) = c !in '0'..'9'

println(isNotDigit(x))
true
檢查傳入的字符是否不在0~9之間铲掐,只要在in之前加一個!表示in的逆運算

四值桩、使用in檢查作為when分支
在kotlin中我們想像java中使用switch語句需要用變成when:
val x: Int = 10
when (x) {
9 -> println("x:${x + 10}")
10 -> println("x:$x")
else -> print("x:$x")
}
是不是感覺差不多摆霉,但是when比起switch更加強(qiáng)大,我們在when中可以用in組合多種區(qū)間:
fun recognize(c: Char) = when (c) {
in '0'..'9' -> "it's a digit"
in 'a'..'z', in 'A'..'Z' -> "it's a letter!"
else -> "i don't know..."
}
println(recognize('8'))
it's a digit

朋友公司最近在找 安卓工程師 要求3年工作經(jīng)驗以上 坐標(biāo) 北京 望京 有意向的直接 md簡歷 發(fā)到heidayuan@126.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奔坟,一起剝皮案震驚了整個濱河市携栋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咳秉,老刑警劉巖婉支,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滴某,居然都是意外死亡磅摹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門霎奢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來户誓,“玉大人,你說我怎么就攤上這事幕侠〉勖溃” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵晤硕,是天一觀的道長悼潭。 經(jīng)常有香客問我,道長舞箍,這世上最難降的妖魔是什么舰褪? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮疏橄,結(jié)果婚禮上占拍,老公的妹妹穿的比我還像新娘略就。我一直安慰自己,他們只是感情好晃酒,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布表牢。 她就那樣靜靜地躺著,像睡著了一般贝次。 火紅的嫁衣襯著肌膚如雪崔兴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天蛔翅,我揣著相機(jī)與錄音敲茄,去河邊找鬼。 笑死搁宾,一個胖子當(dāng)著我的面吹牛折汞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盖腿,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼爽待,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了翩腐?” 一聲冷哼從身側(cè)響起鸟款,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茂卦,沒想到半個月后何什,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡等龙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年处渣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛛砰。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡罐栈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出泥畅,到底是詐尸還是另有隱情荠诬,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布位仁,位于F島的核電站柑贞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏聂抢。R本人自食惡果不足惜钧嘶,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望琳疏。 院中可真熱鬧康辑,春花似錦摄欲、人聲如沸轿亮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽我注。三九已至按咒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間但骨,已是汗流浹背励七。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留奔缠,地道東北人掠抬。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像校哎,于是被迫代替她去往敵國和親两波。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 《Kotin 編程思想·實戰(zhàn)》 《Kotlin極簡教程》正式上架: 點擊這里 > 去京東商城購買閱讀 點擊這里 >...
    光劍書架上的書閱讀 2,086評論 1 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法闷哆,類相關(guān)的語法腰奋,內(nèi)部類的語法,繼承相關(guān)的語法抱怔,異常的語法劣坊,線程的語...
    子非魚_t_閱讀 31,664評論 18 399
  • 【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子屈留,小兔子長到第三個月后每個月又生一對兔...
    葉總韓閱讀 5,140評論 0 41
  • 前言 人生苦多局冰,快來 Kotlin ,快速學(xué)習(xí)Kotlin灌危! 什么是Kotlin康二? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,218評論 9 118
  • this 指針 這是一個嚴(yán)肅的問題,add函數(shù)和add2函數(shù)有什么區(qū)別乍狐,哪一個效率更高赠摇? 答案:一樣的,編譯器內(nèi)部...
    DayDayUpppppp閱讀 801評論 0 1