這篇將帶大家了解 Kotlin 在函數 Function 的基本操作,函數 Function 在程式設計中扮演非常重要的角色,通常使用 function 會有以下好處:
- 減少撰寫重複程式碼,提高程式維護性
- 將程式碼以有意義的命名進行組織
- 若有相同流程的行為,可藉由參數傳遞進行處理
函數定義
Function 是我們為了能夠完成某項特定任務或可重新使用的程式碼區塊,在 Kotlin 中是使用 fun 關鍵字來定義一個函式,其定義格式可參考下圖與利用一個範例進行說明:
此範例建立一個 getSumValue
Function 進行兩數加總,在 main
function 進行呼叫並印出結果
1 | fun main() { |
預設參數值
Kotlin 在 Function 中提供預設函數參數值方法,假設我們想呼叫某一個函數,但不傳遞任何參數,此時就可以使用參數預設值作為函數的參數值,範例如下:
修改前一個範例,當我們沒有傳入任何參數給 getSumValue
方法時,照理應回傳 0
的結果,此時可設定兩個參數預設值為 0
1 | fun main() { |
具名參數
在前面第一個範例中,我們會發現 Function 呼叫時,必須根據函式參數順序(x, y)進行參數傳遞,而 Kotlin 有提供「具名參數」方法,讓我們可以不用照著函數定義時的參數順序進行呼叫,而是呼叫時搭配參數名稱進行賦值呼叫,此作法可以讓我們的程式碼更清晰直觀,例如以下範例:
1 | fun main() { |
匿名函數 Anonymous Function
前面介紹的函數其實都是使用具名函數
來定義,使用此方法就必須賦予一個函數名稱,而匿名函數
則相反,不需要給予函數名稱,匿名函數
也可稱為 Lambda 運算式
,它通常具有以下特性:
- 此函數不需要
return
關鍵字返回資料,則是會隱式自動回傳函數最後一行結果或運算式 - 在定義
只有一個參數
的匿名函數中,可以使用it
關鍵字進行呼叫表示該參數
1 | fun main() { |
高階函數 Higher-Order Functions
在 Kotlin 中支援 Higher - Order Function(高階函數)
方法,所謂高階函數是指我們可以將 Function 作為變數
來進行傳遞,或是 Function 的返回值是一個 Function 類型進行回傳
,此種特性也代表 Kotlin Function 是支援 First-class-object (第一類物件)函數
。
我們利用字串反轉應用為範例如下:
1 | fun main() { |
函數返回值為一個函數類型,可參考下面的範例:
1 | fun main() { |