函數是一種可以重複使用的代碼塊,可以用來執行特定的任務。函數可以接受輸入參數,並返回輸出值。
函數的定義
函數的定義使用 fun
關鍵字,語法如下:
fun 函數名(參數列表): 返回類型 {
// 函數體
return 輸出值
}
函數名
:函數的名稱。參數列表
:函數的輸入參數。返回類型
:函數的返回類型。函數體
:函數的代碼塊。return 輸出值
:函數的返回值。
函數的參數
函數的參數可以是任何數據類型。參數可以是可選的,也可以是必需的。
可選參數
可選參數的值是可選的。如果沒有提供可選參數的值,則會使用默認值。
可選參數的語法如下:
fun 函數名(參數1: 類型, 參數2: 類型 = 默認值) {
// 函數體
}
必需參數
必需參數的值是必需的。如果沒有提供必需參數的值,則會報錯。
必需參數的語法如下:
fun 函數名(參數1: 類型, 參數2: 類型) {
// 函數體
}
函數的返回值
函數可以返回一個值。如果函數沒有返回值,則返回類型是 Unit
。
函數的調用
函數可以使用 函數名(參數列表)
語法進行調用。
以下是一些函數的示例:
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()
函數沒有參數,也不返回任何值。
函數重載
函數可以重載,也就是說,可以有相同名稱的不同函數。函數重載是根據參數列表來區分的。
以下是函數重載的示例:
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 類型.函數名(參數列表): 返回類型
語法進行定義。
以下是函數擴展的示例:
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 函數還提供了一些高級特性,包括:
- 默認參數值
- **參數的默認值可以是任何數據類型。如果沒有提供參數的值,則會使用默認值。
以下是默認參數值的示例:
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)
。
- 可變參數
- **可變參數可以接受任意數量的值。
以下是可變參數的示例:
fun printNumbers(vararg numbers: Int) {
for (number in numbers) {
println(number)
}
}
fun main(args: Array<String>) {
printNumbers(1, 2, 3, 4, 5)
}
上述示例中,printNumbers()
函數接受可變參數 numbers
,該參數可以包含任意數量的整數值。
- 內聯函數
- **內聯函數會在調用時被編譯為原始代碼。
以下是內聯函數的示例:
inline fun inlineFunction(x: Int): Int {
return x * 2
}
fun main(args: Array<String>) {
val result = inlineFunction(10)
println(result)
}
上述示例中,inlineFunction()
函數被內聯了。因此,在調用 inlineFunction()
函數時,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 意見:
張貼留言