我先翻譯為密封類吧O__O "…。
什么是密封類?
官方文檔:密封類用于表示受限類的層次結構,當一個值有一個有限的類型,但不能有任何其他類型。它們在某種意義上是枚舉類的擴展:枚舉類型的值的集合也受到限制,但是每個枚舉常量只能作為一個單獨的實例存在,而一個密封類的子類可以有多個可以包含狀態的實例。
如何聲明密封類?
只需要在class前面添加關鍵字sealed
sealed class Person{
data class YellowPerson(val name:String):Person()
data class WhitePerson(val name:String,age:Int):Person()
object BlackCat:Person()
}
當在表達式中使用它們時,密封類的便捷就會體現出來。如果需要驗證語句是否涵蓋所有的情況,則不需要在語句中添加else。
fun name(person:Person):String=when(person){
is Person.YellowPerson->person.name
is Person.WhitePerson->person.name+person.age
Person.BlackCat->Not A Person
}