密封类代替枚举类
- 在Kotlin中由于密封类的特性,所以可以完全取代枚举类
- 应为
object 是final 类,所以不能继承普通类,但是密封类是abstract ,所以可以继承 - 示例中使用了中缀符号infix和扩展函数,为Int类型扩展出一个比较大小的函数
sealed class CompatrResult{
object LESS: CompatrResult(){
override fun toString(): String {
return "小于"
}
}
object MORE: CompatrResult(){
override fun toString(): String {
return "大于"
}
}
object EQUAL: CompatrResult(){
override fun toString(): String {
return "等于"
}
}
}
infix fun Int.vs(num: Int){
when {
this > num -> println("$this ${CompatrResult.MORE} $num")
this < num -> println("$this ${CompatrResult.LESS} $num")
this == num -> println("$this ${CompatrResult.EQUAL} $num")
}
}
fun main() {
1 vs 2
}
|