iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0

前言

昨天已經介紹一部分Kotlin的語法,今天我們來把剩下的部分補齊,然後就能正式邁入APP開發的部分了,其實官方的文件還有提供很多Kotlin的語法和用法,但若是要全部都探討的一遍,這這篇鐵人賽的主題可能見會變成Kotlin語法學習和應用了,所以後續若是有用到沒提過的語法,我們在單獨出來簡易說明一下。

Kotlin語法介紹

  • when

在 Kotlin 中,when 表達式是一個強大的控制流結構,類似於其他語言中的 switch 語句,但更靈活且功能更強大。when 不僅可以處理常數值,還可以處理多種條件,並且它可以作為一個表達式返回值。

  1. 基本用法
    when 可以用來替代多個 if-else if 結構,根據不同的值執行對應的代碼,同時當所有條件都不匹配時的「預設」情況,類似於 default 在其他語言的 switch 中。如果沒有對應條件時,else 會執行。
val y = 5

when (y) {
    1 -> println("y is 1")
    2 -> println("y is 2")
    else -> println("y is neither 1 nor 2")
}

執行結果如下

y is neither 1 nor 2
  1. 多個條件匹配
    你可以用逗號分隔多個值,讓它們共享相同的執行結果。
val z = 2

when (z) {
    0, 1 -> println("z is 0 or 1")
    2, 3 -> println("z is 2 or 3")
    else -> println("z is neither 0, 1, 2, nor 3")
}

執行結果如下

z is 2 or 3
  1. 使用條件判斷
    when 不僅可以比較常數值,還可以使用條件來判斷。
val number = -10

when {
    number > 0 -> println("Number is positive")
    number < 0 -> println("Number is negative")
    else -> println("Number is zero")
}

執行結果如下

Number is negative
  1. when 作為表達式
    when 可以作為表達式,返回值並賦值給變數。
val x = 3

val result = when (x) {
    1 -> "one"
    2 -> "two"
    else -> "unknown"
}

println(result) 

執行結果如下

unknown
  1. 使用 in 檢查範圍
    when 可以用 in 關鍵字來檢查值是否在某個範圍內。
val score = 75

when (score) {
    in 90..100 -> println("Grade: A")
    in 80..89 -> println("Grade: B")
    in 70..79 -> println("Grade: C")
    else -> println("Grade: F")
}

執行結果如下

Grade: C
  1. 使用 is 檢查類型
    when 還可以用來檢查變數的類型。
val obj: Any = "Hello"

when (obj) {
    is String -> println("It's a string!")
    is Int -> println("It's an integer!")
    else -> println("Unknown type")
}

執行結果如下

It's a string!
  • class

在 Kotlin 中,class 是用來定義物件的結構與行為的關鍵字。類別可以包含屬性(變數)和方法(函式),並且支援繼承、多型等物件導向的特性。

  1. 定義一個簡單的類別
    一個基本的類別定義只包含類別名稱,屬性和方法。Kotlin 的類別預設是「封閉的」,即無法被繼承,除非你在類別前加上 open 關鍵字。以下面這個範例為例
class Person {
    var name: String = ""
    var age: Int = 0

    fun sayHello() {
        println("Hello, my name is $name and I am $age years old.")
    }
}

要使用類別,需要創建類別的物件,然後訪問其屬性和方法。

fun main() {
    val person = Person()
    person.name = "Alice"
    person.age = 25
    person.sayHello()  
}

輸出結果如下

Hello, my name is Alice and I am 25 years old.
  1. 建構函式(Constructor)
    Kotlin 允許直接在類別頭中定義主建構函式,這樣可以更簡潔地初始化屬性,除了主建構函式,你也可以定義次建構函式,來提供額外的初始化方式。
class Person {
    var name: String
    var age: Int

    constructor(name: String, age: Int) {
        this.name = name
        this.age = age
    }

    fun sayHello() {
        println("Hello, my name is $name and I am $age years old.")
    }
}

fun main() {
    val person = Person("Charlie", 40)
    person.sayHello() 
}
  1. 繼承與覆寫
    Kotlin 中類別預設是 final,無法被繼承。要允許繼承,必須使用 open 關鍵字。
open class Animal {
    open fun makeSound() {
        println("Animal sound")
    }
}

class Dog : Animal() {
    override fun makeSound() {
        println("Woof")
    }
}

fun main() {
    val dog = Dog()
    dog.makeSound()  
}
  1. 資料類別(Data Class)
    如果你的類別主要是用來保存數據,Kotlin 提供了 data class,自動生成一些常用的函式(如 toString、equals 和 hashCode)。
data class User(val name: String, val age: Int)

fun main() {
    val user = User("Eve", 22)
    println(user)  
}

後話

今天的內容就到這邊告一段落,明天會開始介紹如何使用Android Studio來建立一個你自己的APP,並稍微使用一下Android Studio內建的功能和模擬機,如果有幸你能看到這邊,那一樣祝你早安、午安、晚安,讓我們明天再見了。


上一篇
Day3:基礎的Kotlin語法(一)
下一篇
Day5:Android Studio啟動!!!
系列文
github裡永遠有一個還沒做的SideProject :用Kotlin來開發點沒用的酷東西30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言