歡迎光臨 紫楓粉絲頁

Kotlin 函數

 函數是一種可以重複使用的代碼塊,可以用來執行特定的任務。函數可以接受輸入參數,並返回輸出值。

函數的定義

函數的定義使用 fun 關鍵字,語法如下:

Kotlin
fun 函數名(參數列表): 返回類型 {
    // 函數體
    return 輸出值
}
  • 函數名:函數的名稱。
  • 參數列表:函數的輸入參數。
  • 返回類型:函數的返回類型。
  • 函數體:函數的代碼塊。
  • return 輸出值:函數的返回值。

函數的參數

函數的參數可以是任何數據類型。參數可以是可選的,也可以是必需的。

可選參數

可選參數的值是可選的。如果沒有提供可選參數的值,則會使用默認值。

可選參數的語法如下:

Kotlin
fun 函數名(參數1: 類型, 參數2: 類型 = 默認值) {
    // 函數體
}

必需參數

必需參數的值是必需的。如果沒有提供必需參數的值,則會報錯。

必需參數的語法如下:

Kotlin
fun 函數名(參數1: 類型, 參數2: 類型) {
    // 函數體
}

函數的返回值

函數可以返回一個值。如果函數沒有返回值,則返回類型是 Unit

函數的調用

函數可以使用 函數名(參數列表) 語法進行調用。

以下是一些函數的示例:

Kotlin
fun add(x: Int, y: Int): Int {
    return x + y
}

fun sayHello() {
    println("Hello, world!")
}

fun main(args: Array<String>) {
    val sum = add(10, 20)
    println(sum)

    sayHello()
}

上述示例中,add() 函數接受兩個整數參數,並返回一個整數值。sayHello() 函數沒有參數,也不返回任何值。

函數重載

函數可以重載,也就是說,可以有相同名稱的不同函數。函數重載是根據參數列表來區分的。

以下是函數重載的示例:

Kotlin
fun add(x: Int, y: Int): Int {
    return x + y
}

fun add(x: Double, y: Double): Double {
    return x + y
}

fun main(args: Array<String>) {
    val sum1 = add(10, 20)
    val sum2 = add(10.0, 20.0)

    println(sum1)
    println(sum2)
}

上述示例中,add() 函數有兩個重載版本。第一個版本接受兩個整數參數,返回一個整數值。第二個版本接受兩個浮點數參數,返回一個浮點數值。

函數的擴展

函數擴展是指在現有類型上添加新的函數。函數擴展使用 fun 類型.函數名(參數列表): 返回類型 語法進行定義。

以下是函數擴展的示例:

Kotlin
fun String.reverse(): String {
    val chars = this.toCharArray()
    chars.reverse()
    return chars.joinToString("")
}

fun main(args: Array<String>) {
    val str = "Hello, world!"
    val reversedStr = str.reverse()

    println(reversedStr)
}

上述示例中,reverse() 函數擴展了 String 類型。


函數的高級特性

Kotlin 函數還提供了一些高級特性,包括:

  • 默認參數值
  • **參數的默認值可以是任何數據類型。如果沒有提供參數的值,則會使用默認值。

以下是默認參數值的示例:

Kotlin
fun add(x: Int, y: Int = 10): Int {
    return x + y
}

fun main(args: Array<String>) {
    val sum1 = add(10, 20)
    val sum2 = add(10)

    println(sum1)
    println(sum2)
}

上述示例中,add() 函數的第二個參數 y 有默認值 10。因此,add(10) 等效於 add(10, 10)

  • 可變參數
  • **可變參數可以接受任意數量的值。

以下是可變參數的示例:

Kotlin
fun printNumbers(vararg numbers: Int) {
    for (number in numbers) {
        println(number)
    }
}

fun main(args: Array<String>) {
    printNumbers(1, 2, 3, 4, 5)
}

上述示例中,printNumbers() 函數接受可變參數 numbers,該參數可以包含任意數量的整數值。

  • 內聯函數
  • **內聯函數會在調用時被編譯為原始代碼。

以下是內聯函數的示例:

Kotlin
inline fun inlineFunction(x: Int): Int {
    return x * 2
}

fun main(args: Array<String>) {
    val result = inlineFunction(10)
    println(result)
}

上述示例中,inlineFunction() 函數被內聯了。因此,在調用 inlineFunction() 函數時,Kotlin 編譯器會將函數體內的代碼插入到調用處。

  • 高階函數
  • **高階函數可以接受函數作為參數,或者可以返回函數。

以下是高階函數的示例:

Kotlin
fun filter(list: List<Int>, predicate: (Int) -> Boolean): List<Int> {
    val result = mutableListOf<Int>()
    for (i in list) {
        if (predicate(i)) {
            result.add(i)
        }
    }
    return result
}

fun main(args: Array<String>) {
    val list = listOf(1, 2, 3, 4, 5)
    val evenNumbers = filter(list) { it % 2 == 0 }
    println(evenNumbers)
}

上述示例中,filter() 函數接受一個 List<Int> 列表和一個 (Int) -> Boolean 函數作為參數。(Int) -> Boolean 函數用來判斷列表中的元素是否符合條件。

函數是 Kotlin 語言中非常重要的一個部分。掌握函數的使用可以幫助您編寫更加靈活和高效的程序。


深入淺出學會編寫程式: https://pse.is/3ksear

Kotlin 實戰手冊: https://bookstw.link/5g3bsy

程式新手學習發問區,問都給問!!: https://www.facebook.com/groups/914880435669061

紫楓FB專頁: https://www.facebook.com/tbpfs2/

紫楓blog: https://tbpfs1.blogspot.com/

斗內專線: https://pse.is/KUYMP

0 意見: