【Kotlin 入門指南】列舉類別 (Enum classes)

更新於 發佈於 閱讀時間約 7 分鐘
【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q

列舉類別

在 Kotlin 程式語言中,列舉類別 (Enum classes) 可以定義一組具有固定名稱和值的常數。我們通常會使用列舉類別來表示一組相關的狀態或選項,例如:顏色(黃、綠、紅)、方向(東、南、西、北)、技能等級(高、中、低)。

基本列舉類別範例

enum class Color {
YELLOW,
GREEN,
RED
}

fun main() {
println("${Color.YELLOW.ordinal} : ${Color.YELLOW.name}")
}

輸出結果

0 : YELLOW

在這一個範例中,我們建立了一個名為Color的列舉類別,其中包含了YELLOWGREENRED三種不同的顏色。每個列舉成員都是Color類別的一個實例,而這些實例可以像常規類別一樣被引用。例如,你可以透過Color.YELLOW來存取YELLOW這個列舉成員。而其中ordinal屬性代表了該列舉成員在列舉類別中的索引位置,從0開始計算。name屬性則代表了該列舉成員的名稱。

main函數中,你使用了Color.YELLOW.ordinalColor.YELLOW.name來取得YELLOW這個列舉成員的索引位置和名稱。通過這段程式碼,你可以得到0 : YELLOW的輸出結果。

這樣的設計可以讓程式中更方便地使用預定義的命名常數,使得程式碼更易讀、易懂。列舉類別在許多情況下都是一個有用且方便的程式設計元素,特別是當你需要定義一個固定且有限的集合時。

列舉初始值

建立一個列舉(enum)時,可以為每個列舉實例指定一個初始值。這個初始值可以是任何 Kotlin 支援的類型,像是整數、字串等。

列舉初始值範例

enum class Level(val title: String) {
HIGH("高級"),
MIDDLE("中級"),
LOW("初級"),
}

fun main() {
println("${Level.HIGH.ordinal}, ${Level.HIGH.name}, ${Level.HIGH.title}")
}

在這個範例中,每個列舉實例(HIGH、MIDDLE、LOW)都有一個與之關聯的字串初始值,我們印出 Level.HIGH 等級的相關資訊,代表了該等級的說明。例如,HIGH 等級的初始值為 "高級",而 MIDDLE 等級的初始值為 "中級",以此類推。

透過Level.HIGH.ordinal 會回傳該列舉實例在列舉類別中的序數(從零開始計算)。而 Level.HIGH.name 則會取得該列舉實例的名稱,這裡會是 "HIGH"。最後,我們可以透過 Level.HIGH.title 取得這個等級的名稱,也就是 "高級"。

這種方式能讓你以清晰且易讀的方式管理固定集合的值,在需要時輕鬆地使用它們。

列舉類別函數

建立列舉(enum)時,可以為列舉類別定義函數。這些函數可以用來執行與列舉類別相關的操作,讓程式碼更有結構性且易於擴展。

列舉類別函數範例

data class LevelData(var title: String)

enum class Level(private var data: LevelData) {
HIGH(LevelData("高級")),
MIDDLE(LevelData("中級")),
LOW(LevelData("初級")),

; //列舉結束符號

fun show() = "${data.title}"

fun update(levelData: LevelData) {
println("更新前資料:${data.title}")

this.data.title = levelData.title

println("更新後資料:${data.title}")
}
}

fun main() {
println(Level.LOW)

println(Level.LOW.show())

Level.LOW.update(LevelData("入門"))
}

在這個範例中,我們建立一個 LevelData 的資料類別(data class),這個類別只有一個名為 title 的可變字串屬性。

接著,我們建立了一個名為 Level 的列舉類別(enum class),裡面包含了三個列舉實例:HIGH、MIDDLE 和 LOW。每個列舉實例都帶有一個對應的 LevelData 物件,代表不同等級的標題。

列舉實例包含了兩個函數:show()update(levelData: LevelData)show() 函數返回該列舉實例對應的標題,而 update(levelData: LevelData) 函數用於更新列舉實例的標題資料。

接著在 main() 函數中,println(Level.LOW) 印出 LOW 列舉實例。println(Level.LOW.show()) 印出 LOW 列舉實例對應的標題。Level.LOW.update(LevelData("入門")) 更新 LOW 列舉實例的標題為 "入門"

使用列舉類別的好處

  • 程式碼更清晰:使用列舉類別可以使程式碼更易讀和維護。
  • 類型安全:列舉類別限制了可以使用的值,減少了錯誤。
  • 方便的方法和屬性:你可以在列舉類別中定義方法和屬性,使其更具功能性。
留言
avatar-img
留言分享你的想法!
avatar-img
HKT實驗室
21會員
261內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
HKT實驗室的其他內容
2023/12/15
本文介紹 Kotlin 中的延遲初始化(lateinit)和懶加載(lazy)的使用方法,以及它們之間的差異。這些關鍵字能夠提升程式效能並簡化程式碼撰寫。
Thumbnail
2023/12/15
本文介紹 Kotlin 中的延遲初始化(lateinit)和懶加載(lazy)的使用方法,以及它們之間的差異。這些關鍵字能夠提升程式效能並簡化程式碼撰寫。
Thumbnail
2023/12/11
空值例外是開發中一個常見的風險,特別是在 Kotlin 和 Java 這樣的跨平台開發中更容易出現。藉由合理地運用 Kotlin 的空值安全機制以及對 Java 程式碼的註解,可以有效地降低程式錯誤的風險,提高程式碼的可靠性和穩定性。
Thumbnail
2023/12/11
空值例外是開發中一個常見的風險,特別是在 Kotlin 和 Java 這樣的跨平台開發中更容易出現。藉由合理地運用 Kotlin 的空值安全機制以及對 Java 程式碼的註解,可以有效地降低程式錯誤的風險,提高程式碼的可靠性和穩定性。
Thumbnail
2023/12/11
在 IntelliJ IDEA 建立 Kotlin 專案時,要執行 Java 程式只需將其檔案命名為 .java,並放置在專案的 java 目錄中。這樣就可以順利執行該 Java 程式。
Thumbnail
2023/12/11
在 IntelliJ IDEA 建立 Kotlin 專案時,要執行 Java 程式只需將其檔案命名為 .java,並放置在專案的 java 目錄中。這樣就可以順利執行該 Java 程式。
Thumbnail
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
提供一條簡單公式、一套盤點思路,幫助你快速算出去日本自助旅遊需要準備多少日幣現金!
Thumbnail
提供一條簡單公式、一套盤點思路,幫助你快速算出去日本自助旅遊需要準備多少日幣現金!
Thumbnail
題目敘述 題目會給我們一個輸入陣列nums,和一個指定的k值。 請問,在輸入陣列nums中,有幾個子陣列的元素總合恰好為k ? 例如: nums = [1,2,3], k = 3 則有兩個子陣列的元素總合為3,分別是[1,2] 和 [3] 如果是第一次聽到或接觸前綴和prefix的同學
Thumbnail
題目敘述 題目會給我們一個輸入陣列nums,和一個指定的k值。 請問,在輸入陣列nums中,有幾個子陣列的元素總合恰好為k ? 例如: nums = [1,2,3], k = 3 則有兩個子陣列的元素總合為3,分別是[1,2] 和 [3] 如果是第一次聽到或接觸前綴和prefix的同學
Thumbnail
在 Kotlin 程式語言中,列舉類別 (Enum classes) 可以定義一組具有固定名稱和值的常數。我們通常會使用列舉類別來表示一組相關的狀態或選項,例如:顏色(黃、綠、紅)、方向(東、南、西、北)、技能等級(高、中、低)。
Thumbnail
在 Kotlin 程式語言中,列舉類別 (Enum classes) 可以定義一組具有固定名稱和值的常數。我們通常會使用列舉類別來表示一組相關的狀態或選項,例如:顏色(黃、綠、紅)、方向(東、南、西、北)、技能等級(高、中、低)。
Thumbnail
Kotlin 程式語言中的範圍(Range)循環操作,可以輕鬆地迭代特定範圍內的值。一個範圍由兩個值界定,即起始值和終止值。 此外,還有 step、until 和 downTo 函數可以與範圍搭配運用,提供更多彈性和控制。
Thumbnail
Kotlin 程式語言中的範圍(Range)循環操作,可以輕鬆地迭代特定範圍內的值。一個範圍由兩個值界定,即起始值和終止值。 此外,還有 step、until 和 downTo 函數可以與範圍搭配運用,提供更多彈性和控制。
Thumbnail
在 Kotlin 程式語言中,for 迴圈非常便捷,能用於遍歷陣列、列表、集合等多種資料型別中的元素。這種遍歷方式不僅簡潔易讀,還能輕鬆處理集合內的元素。
Thumbnail
在 Kotlin 程式語言中,for 迴圈非常便捷,能用於遍歷陣列、列表、集合等多種資料型別中的元素。這種遍歷方式不僅簡潔易讀,還能輕鬆處理集合內的元素。
Thumbnail
Map 集合特性: 採 key、value 方式存放,key 唯一不能重覆。
Thumbnail
Map 集合特性: 採 key、value 方式存放,key 唯一不能重覆。
Thumbnail
347. Top K Frequent Elements 解題
Thumbnail
347. Top K Frequent Elements 解題
Thumbnail
List 清單 和 Tuple元組 清單在Python裡面非常的常用,大家一定要熟練這些基礎的元素。 在Python中,列表(List)是一種常用的資料類型,用於儲存一組有序的元素。列表是可變的(Mutable),這意味著你可以在列表中新增、刪除和修改元素。列表使用方括號 []
Thumbnail
List 清單 和 Tuple元組 清單在Python裡面非常的常用,大家一定要熟練這些基礎的元素。 在Python中,列表(List)是一種常用的資料類型,用於儲存一組有序的元素。列表是可變的(Mutable),這意味著你可以在列表中新增、刪除和修改元素。列表使用方括號 []
Thumbnail
Hi,大家好。我是茶桁。 最近几节课,我们都是在详细讲解Python内的数据类型,上一节课我们详细了解了字符串,这节课,让我们来详解一下列表。 首先,我们先有一个大的概念,列表,其实就是一组有序的数据组合;另外,列表中的数据是可以被修改的。也就是说,列表是一个可变序列类型。 列表定义 如何在
Thumbnail
Hi,大家好。我是茶桁。 最近几节课,我们都是在详细讲解Python内的数据类型,上一节课我们详细了解了字符串,这节课,让我们来详解一下列表。 首先,我们先有一个大的概念,列表,其实就是一组有序的数据组合;另外,列表中的数据是可以被修改的。也就是说,列表是一个可变序列类型。 列表定义 如何在
Thumbnail
我們將會學習 Python 中的數據結構。 主要的數據結構包括列表 (List)、元組 (Tuple)、字典 (Dictionary) 以及集合 (Set)。
Thumbnail
我們將會學習 Python 中的數據結構。 主要的數據結構包括列表 (List)、元組 (Tuple)、字典 (Dictionary) 以及集合 (Set)。
Thumbnail
  本篇要分享的內容包含Enum、Dictionary、Stack、Queue、IComparable<T>、IComparer<T>、CompareTo、Compare等等相關內容。它們與Array和List有些類似,都是資料集合存取或資料其他相關處理的部分,我們就來看一看它們是何方神聖吧~
Thumbnail
  本篇要分享的內容包含Enum、Dictionary、Stack、Queue、IComparable<T>、IComparer<T>、CompareTo、Compare等等相關內容。它們與Array和List有些類似,都是資料集合存取或資料其他相關處理的部分,我們就來看一看它們是何方神聖吧~
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News