Kotlin 教學【從零開始學 Kotlin 程式設計】密封類別(sealed class)
【從零開始學 Kotlin 程式設計】
線上教學課程目錄:https://bit.ly/2Kx7GrM
Youtube 課程播放清單:https://bit.ly/3qJ5a5Q
密封類別
當物件有限定狀態時,通常我們會使用「列舉列別(enum class)」,
但它比較適和用來判斷簡單的狀態,不接受變數傳遞,
所以當今天我們想傳遞變數運算時,則會改採用「密封類別(sealed class)」,
可以把它視為進階版的 enum class。
在 Kotlin 中,我們使用關鍵字「sealed」來定義一個密封類別。
sealed class MySealedClass {
//密封類的成員,必須繼承自己類別 MySealedClass()
//如果沒有參數應為 object 類型
object State1 : MySealedClass()
object State2 : MySealedClass()
object State3 : MySealedClass()
//有參數可為 class 或 data class 類型
class State4(val value: Int) : MySealedClass()
}
class MyClass(private val data: MySealedClass) {
fun show() =
when (data) {
is MySealedClass.State1 -> "State1"
is MySealedClass.State2 -> "State2"
is MySealedClass.State3 -> "State3"
is MySealedClass.State4 -> "State4: ${data.value}"
//若少實現一種 MySealedClass 狀態條件判斷會噴錯,除非加入 else 判斷。
// else -> "未知狀態"
}
}
fun main() {
println(MyClass(MySealedClass.State1).show())
println(MyClass(MySealedClass.State4(100)).show())
}
那這次的課程就介紹到這邊囉~
順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰