寫之前先放張圖
看來使用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