iOS swift中函式型別作為返回型別

2021-07-08 15:54:19 字數 1465 閱讀 7974

你可以用函式型別作為另乙個函式的返回型別。你需要做的是在返回箭頭(->)後寫乙個完整的函式型別。

下面的這個例子中定義了兩個簡單函式,分別是stepforwardstepbackwardstepforward函式返回乙個比輸入值大一的值。stepbackward函式返回乙個比輸入值小一的值。這兩個函式的型別都是(int) -> int

func stepforward(input: int) -> int 

func stepbackward(input: int) -> int

下面這個叫做choosestepfunction的函式,它的返回型別是(int) -> int的函式。choosestepfunction根據布林值backwards來返回stepforward函式或stepbackward函式:

func choosestepfunction(backwards: bool) ->

(int) -> int

你現在可以用choosestepfunction來獲得乙個函式,不管是那個方向:

var currentvalue = 3

let movenearertozero = choosestepfunction(currentvalue > 0)

// movenearertozero now refers to the stepbackward() function

上面這個例子中計算出從currentvalue逐漸接近到0是需要向正數走還是向負數走。currentvalue的初始值是3,這意味著currentvalue > 0是真的(true),這將使得choosestepfunction返回stepbackward函式。乙個指向返回的函式的引用儲存在了movenearertozero常量中。

現在,movenearertozero指向了正確的函式,它可以被用來數到0

println("counting to zero:")

// counting to zero:

while currentvalue != 0

println("zero!")

// 3...

// 2...

// 1...

// zero!

Golang 中函式作為值與型別

在 go 語言中,我們可以把函式作為一種變數,用 type 去定義它,那麼這個函式型別就可以作為值傳遞,甚至可以實現方法,這一特性是在太靈活了,有時候我們甚至可以利用這一特性進行型別轉換。作為值傳遞的條件是型別具有相同的引數以及相同的返回值。go 語言的型別轉換基本格式如下 type name ex...

Golang 中函式作為值與型別

在 go 語言中,我們可以把函式作為一種變數,用 type 去定義它,那麼這個函式型別就可以作為值傳遞,甚至可以實現方法,這一特性是在太靈活了,有時候我們甚至可以利用這一特性進行型別轉換。作為值傳遞的條件是型別具有相同的引數以及相同的返回值。go 語言的型別轉換基本格式如下 type name ex...

Go中函式作為值 型別傳遞。

在go中函式也是一種變數,我們可以通過type來定義它,它的型別就是所有擁有相同的引數,相同的返回值的一種型別 type typename func input1 inputtype1 input2 inputtype2 result1 resulttype1 函式作為型別到底有什麼好處呢?那就是可...