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ù)為表達式體函數(shù),編譯器回分析作為函數(shù)體的表達式,并把他的類型作為函數(shù)的返回類型,即使沒有顯示的寫出來,這種分析被稱為類型推導(dǎo)。這里注意一下,只有表達式函數(shù)的返回類型可以省略。

二、字符串模版

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

在代碼中你聲明了一個變量name,并且在后面的字符串面值中使用了它,kotlin可以讓你在字符串中引用局部變量,只要在變量名前加上$這樣等價于java中的(“hello”+name),效率雖然一樣,但是更緊湊!
如果我要在字符串中使用$字符怎么辦,你要對它轉(zhuǎn)義:println("$x")會打印$x,并不會把x解釋成變量的引用。
還可以在雙引號中直接嵌套雙引號,只要它們處在某個表達式的范圍內(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更加強大,我們在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)驗以上 坐標 北京 望京 有意向的直接 md簡歷 發(fā)到heidayuan@126.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容