Kotlin 高階函數

      在〈Kotlin 高階函數〉中尚無留言

函數型參數

函數中的參數,一般都是傳入資料型態。但在Python中,參數卻可以是另一個函數。這種將函數當成參數傳入,稱為高階函數。高階函數其是是數學的一個概念,比如 f(x)=x2 的導數為2x。也就是說導出的2x也是一個函數。

底下是Python的代碼,如果要測試,請在Pycharm裏編寫執行。

def c2f(t):#t是小數
return t*9/5+32
def f2c(t):#t是小數
return (t-32)*5/9
def temp(t, func):#t是小數,func是函數
return func(t)
if __name__=="__main__":
c=100
f=temp(c, c2f)
print(f'攝氏:{c}, 華氏:{f}')
f=212
c=temp(f, f2c)
print(f'華氏:{f}, 華氏:{c}')

“::” 運算子

Java不可以將函數當成參數傳入,但強大的kotlin卻可以。其實kotlin並不是徹底的改變其架構,而是使用了一個賤招~~利用 “::” 運算子將函數copy 新的一份,然後包裝成一個物件。此物件的型態為

(參數1, 參數2, ……) -> 返回值

底下的程式碼中,可以使用 val funObject : (Double)->Double = ::c2f,此物件有一個invoke()方法,此方法就是要開始執行 c2f 函數,而invoke裏的參數,就是要傳入c2f 的參數。如下所示。

fun main(args:Array<String>){
val funObject:(Double)->Double = ::c2f
println(funObject.invoke(100.0))

}
fun c2f(t:Double):Double{
return t*9/5+32
}

因為kotlin可以自動判斷型別,所以可以寫成

🔒 底下內容僅限會員閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *