Kotlin學習筆記系列:http://blog.csdn.net/column/details/16696.html
1、枚舉
enum Icon(val res: Int){
MENU(R.drawable.menu),
BACK(R.drawable.back)
}
val backIcon = Icon.BACK.res
枚舉可以通過字符串匹配名字來獲取,也可以得到所以枚舉的array,如val back: Icon = Icon.valueOf("BACK")
val icons: Array<Icon> = Icon.values()
枚舉也提供一些函數來獲取名字和聲明的位置val name: String = Icon.BACK.name()
val position: Int = Icon.BACK.ordinal()
枚舉根據順序實現了Comparable接口,所以可以很方便的進行排序2、封閉類sealed
sealed class Icon{
class Menu(val id: Int) : Icon()
class Back(val url: String) : Icon()
object None : Icon()
}
可以看到它有固定個數的子類,而且子類與父類一起被定義出來。與enum不同的是,枚舉的實例是唯一的,而封閉類可以有多個實例,它可以有不同的狀態。val result: String = when(icon){
is Menu -> "xxx" + icon.id
is Back -> icon.url
is None -> ""
}