欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入學(xué)習(xí)Kotlin?枚舉的簡潔又高效進階用法

 更新時間:2023年05月09日 09:16:57   作者:TechMerger  
這篇文章主要為大家介紹了深入學(xué)習(xí)Kotlin?枚舉簡潔又高效的進階用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

翻譯自:towardsdev.com/mastering-e…

Kotlin 作為現(xiàn)代的、強大的編程語言,可以給開發(fā)者提供諸多特性和工具,得以幫助我們編寫更加高效、更具可讀性的代碼。

其中一個重要的特性便是 Enum 枚舉,其本質(zhì)上是一種數(shù)據(jù)類型:允許你定義一組用名稱區(qū)分的常量。

本篇文章將通過代碼案例帶你探索 Kotlin 枚舉的進階用法,進而幫助大家理解如何將 Enum 更好地應(yīng)用到項目當(dāng)中。

1. 枚舉類

可以說 Enum Classes 是 Kotlin 中展示一組常量的絕佳方式。

具體來說,它允許你定義一組有限數(shù)量的成員來限定數(shù)據(jù)類型,并且你可以在代碼的各處便捷使用這些枚舉類型。

如下,我們用 enum 關(guān)鍵字定義一周內(nèi)各天的枚舉類型。

 enum class DayOfWeek {
     MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
 }

然后在代碼中自由使用該枚舉,比如:

 fun getWeekendDays(): List<DayOfWeek> {
     return listOf(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY)
 }

2. 枚舉屬性

除了展示類型,Kotlin Enum 還可以擁有屬性 property,這意味著開發(fā)者可以給枚舉成員添加額外的信息。

比如下面,我們給 DayOfWeek 枚舉增加各天在周內(nèi)的序號屬性。

 enum class DayOfWeek(val number: Int) {
     MONDAY(1),
     TUESDAY(2),
     WEDNESDAY(3),
     THURSDAY(4),
     FRIDAY(5),
     SATURDAY(6),
     SUNDAY(7)
 }

然后便可以獲得該天的序號信息。

 fun getDayNumber(day: DayOfWeek): Int {
     return day.number
 }

3. 枚舉函數(shù)

Kotlin Enum 也支持定義函數(shù),所以可以在枚舉內(nèi)部定義功能性方法、供外部使用。

如下在 DayOfWeek 枚舉里增加一個用來判斷該天是否屬于周末的 isWeekend() 函數(shù)。

 enum class DayOfWeek(val number: Int) {
     MONDAY(1),
     TUESDAY(2),
     WEDNESDAY(3),
     THURSDAY(4),
     FRIDAY(5),
     SATURDAY(6),
     SUNDAY(7);
 ?
     fun isWeekend(): Boolean {
         return this == SATURDAY || this == SUNDAY
     }
 }

在使用該枚舉的地方,便可以直接使用該函數(shù)進行判斷。

 fun printDayType(day: DayOfWeek) {
     if (day.isWeekend()) {
         println("$day is a weekend day.")
     } else {
         println("$day is a weekday.")
     }
 }

4. 枚舉構(gòu)造函數(shù)

既然 Enum 可以擁有屬性,那么自然支持構(gòu)造函數(shù),所以開發(fā)者可以在實例構(gòu)造的時候,增加充分多的信息。

比如,我們在 DayOfWeek 枚舉的構(gòu)造函數(shù)里,在序號以外增加該天的名稱信息。

 enum class DayOfWeek(val number: Int, val displayName: String) {
     MONDAY(1, "Monday"),
     TUESDAY(2, "Tuesday"),
     WEDNESDAY(3, "Wednesday"),
     THURSDAY(4, "Thursday"),
     FRIDAY(5, "Friday"),
     SATURDAY(6, "Saturday"),
     SUNDAY(7, "Sunday");
 ?
     override fun toString(): String {
         return displayName
     }
 }

這樣便可以獲得該枚舉攜帶的名稱數(shù)據(jù)。

 fun printDayName(day: DayOfWeek) { 
     println("The day of the week is ${day.displayName}") 
 }

5. 枚舉擴展函數(shù)

和普通類一樣,也可以針對 Enum Class 添加擴展函數(shù)。我們可以在枚舉類外部,按需添加額外的功能函數(shù)。

比如這里給 DayOfWeek 枚舉擴展一個獲取下一天的函數(shù)。

 fun DayOfWeek.nextDay(): DayOfWeek {
     return when (this) {
         MONDAY -> TUESDAY
         TUESDAY -> WEDNESDAY
         WEDNESDAY -> THURSDAY
         THURSDAY -> FRIDAY
         FRIDAY -> SATURDAY
         SATURDAY -> SUNDAY
         SUNDAY -> MONDAY
     }
 }

像調(diào)用枚舉本身定義的函數(shù)一樣,自由使用該擴展函數(shù)。

 fun printNextDay(day: DayOfWeek) {
     println("The next day is ${day.nextDay()}")
 }

結(jié)語

可以看到 Kotlin Enum 可以幫助開發(fā)者定義好一組類型的常量:大大簡化代碼、具備更好的可讀性以及提供額外的功能函數(shù)。

通過上述的進階用法,相信大家可以使用 Enum 創(chuàng)造出更加健壯和高效的代碼,同時也更容易理解和維護。

以上就是深入學(xué)習(xí)Kotlin 枚舉的簡潔又高效進階用法的詳細內(nèi)容,更多關(guān)于Kotlin 枚舉進階的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論