2024-06-29|閱讀時間 ‧ 約 26 分鐘

Kotlin入門-Day7:函數

函數的基本結構

在 Kotlin 中,函數是一等公民,可以像變數一樣使用。Kotlin 支持多種方式來定義和使用函數,包括函數聲明、函數表達式和匿名函數。

函數聲明

函數聲明的基本語法如下:

fun functionName(parameter1: Type1, parameter2: Type2): ReturnType {
// 函數體
return result
}

範例:

fun add(a: Int, b: Int): Int {
return a + b
}

函數表達式

Kotlin 支持使用表達式來定義函數,這樣可以簡化函數的定義。

fun add(a: Int, b: Int): Int = a + b

匿名函數

匿名函數可以用來定義沒有名稱的函數,通常用於高階函數中。

val sum = fun(a: Int, b: Int): Int {
return a + b
}

// 簡化版本
val sum = { a: Int, b: Int -> a + b }

函數的呼叫

函數呼叫的方式非常簡單,直接使用函數名稱並傳遞參數即可。

val result = add(3, 4)  // result 為 7

函數的參數

單個參數

fun greet(name: String) {
println("Hello, $name!")
}

greet("John") // 輸出: Hello, John!

多個參數

fun add(a: Int, b: Int, c: Int): Int {
return a + b + c
}

val result = add(1, 2, 3) // result 為 6

預設參數值

可以為函數參數設置預設值,這樣在呼叫函數時可以省略對應的參數。

fun greet(name: String, greeting: String = "Hello") {
println("$greeting, $name!")
}

greet("John") // 輸出: Hello, John!
greet("John", "Hi") // 輸出: Hi, John!

剩餘參數

使用 vararg 關鍵字可以定義可變長度參數。

fun sum(vararg numbers: Int): Int {
var total = 0
for (number in numbers) {
total += number
}
return total
}

val result = sum(1, 2, 3, 4, 5) // result 為 15

函數的返回值

單個返回值

fun square(x: Int): Int {
return x * x
}

val result = square(5) // result 為 25

多個返回值

可以使用 PairTriple 來返回多個值。

fun getFullName(): Pair<String, String> {
return Pair("John", "Doe")
}

val (firstName, lastName) = getFullName()
println("First Name: $firstName, Last Name: $lastName") // 輸出: First Name: John, Last Name: Doe

返回物件

可以返回一個自訂的物件。

class Person(val name: String, val age: Int)

fun createPerson(name: String, age: Int): Person {
return Person(name, age)
}

val person = createPerson("Alice", 30)
println("Name: ${person.name}, Age: ${person.age}") // 輸出: Name: Alice, Age: 30

返回函數

函數可以返回另一個函數,這是高階函數的一個例子。

fun operation(): (Int, Int) -> Int {
return ::add
}

val addFunction = operation()
val result = addFunction(3, 4) // result 為 7

這些是 Kotlin 中函數的基本用法和概念。通過熟練掌握這些知識,你可以更靈活地定義和使用函數來解決各種問題。如果有任何問題,隨時可以詢問。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.