Object C Swift之 六 函式型別

2021-07-09 14:09:46 字數 1385 閱讀 6172

每個函式都有特定的函式型別

函式型別是由函式的形參型別、->和返回值型別組成。

例如:

func add(a:int,b:int)

該函式的函式型別為(int,int)->void或者(int,int)->()

func add()->int

該函式的函式型別為()->int

func add()

該函式的函式型別為()->()或者()->void

func add(a:int,b:int)->int

該函式的函式型別為(int,int)->int

使用函式型別

定義變數

定義變數,其型別為(int,int)->int

var myadd:(int,int)->int

func add(a:int,b:int)->int

myadd=add

print(myadd(3,4))

//輸出7

當函式型別和我們定義的變數型別一致的時候我們就能夠賦值成功。

函式型別作為形參型別

有些時候我們寫乙個函式,這個函式的大部分邏輯是十分確定的,但某些處理邏輯是無法確定的需要根據具體情況進行動態的改變。這個時候我們可以在函式中定義函式型別的形參,這樣在呼叫該函式的時候傳入不同的函式作為引數,從而動態的改變函式的功能。

func add(var a:int,var b:int,fn:(int)->int)->int

//不對b進行改變

funconlyb(val :int)->int

//對b進行平方改變

func square(val:int)->int

對b進行立方改變

func cube (val:int)->int

print(add(3,4,fn:onlyb))//輸出7

prin(add(3,4,fn:square))//輸出19

print(add(3,4,fn:cube))//輸出67

分析**:我們在上面程式中,有兩個變數的值是不變的,但對第二個變數進行變化是動態的,可能需要平方操作或者立方操作,也可能不需要任何操作。

使用函式型別作為返回值型別

func squar (val:int)->int

func cube (val:int)->int

func onlyb (val:int)int

//注意返回值型別為(int)->int

func math(#type:string)->(int)->int

var math=math(type:"cube")

print(math(5))//輸出125

}

Object C Swift之 七 函式過載

名字相同的函式出現在一起,就構成了函式過載,只要形參列表或者返回值型別不同就行。三者其中一種不一樣均可作為函式過載 舉例說明 該函式型別為 void func test 該函式型別為 string void或者 string func test msg string 該函式型別為 string st...

小白學opengl之gluLookAt函式例子

include include include include using namespace std gldouble wx,wy,wz returned world x,y,z coords void init void void display void printf n glgetfloat...

Linux應用開發之sigaction函式

sigaction訊號註冊函式,把某個使用者指定的訊號註冊到核心。int sigaction int signum,const struct sigaction act,struct sigaction oldact signum 訊號的編號 act 指向struct sigaction結構體 ol...