來源于《Kotlin實戰(zhàn)》中一些自己記錄的常用用法
類與屬性
字符串模板
fun main(args:Array<String>){
println("Hello ${if(args.size > 0) args[0] else "zero~~ "}")
}
//如果沒有傳入?yún)?shù)的話 輸出 zero~~
Kotlin中的Bean
//Java
public class Person{
private final String name;
//getter...
//setter...
}
//Kotlin 稱為值對象
class Person(val name:String)
kotlin中val
為只讀屬性 (生成一個字段和一個getter) val
為可寫屬性(生成一個字段瓷胧、一個getter 和一個setter)
自定義訪問器
class Rectangle(val height:Int,val width:Int){
val isSquare:Boolean
get(){
return height == width
} //自定義getter
}
//調(diào)用
val rect = Rectangle(40,40)
println(rect.isSquare)
//輸出:true
聲明枚舉類型
enum class Color{ RED,ORANGE,BLUE,GREEN}
//聲明帶屬性的枚舉類型
enum class Color(val r:Int,val g:Int,val b:Int){
RED(255,0,0),ORANGE(255,165,0)
fun rgb = (r*256+g) *256 +b
}
//輸出
println(Color.RED.rgb())
在一個when分支上合并多個選項
enum class Color {
RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
}
fun getWarmth(color: Color) = when(color) {
Color.RED, Color.ORANGE, Color.YELLOW -> "warm"
Color.GREEN -> "neutral"
Color.BLUE, Color.INDIGO, Color.VIOLET -> "cold"
}
fun main(args: Array<String>) {
println(getWarmth(Color.ORANGE))
}
//輸出:warm
在"when"中使用任意對象
setOf() 創(chuàng)建出一個Set
fun mix(c1: Color, c2: Color) =
when (setOf(c1, c2)) {
setOf(RED, YELLOW) -> ORANGE
setOf(YELLOW, BLUE) -> GREEN
setOf(BLUE, VIOLET) -> INDIGO
else -> throw Exception("Dirty color")
}
fun main(args: Array<String>) {
println(mix(BLUE, YELLOW))
}
Kotlin中的is
使用is 判斷某個變量是否是某個類型
使用as進行特定類型的顯式轉換
Kotlin中的迭代
for(i in 100 downTo 1 step 2){
println("log")
}
//打印5行l(wèi)og
for(i in 1..10){
println("log")
}
fun main(args: Array<String>) {
var list = arrayListOf("1","2","3")
for((index,element) in list.withIndex()){
println("$index:$element")
}
}
//0:1
//1:2
//2:3
使用in檢查集合和區(qū)間
fun isLetter(c:Char) = c in 'a'..'z' || c in 'A'..'Z'