Swift學習筆記 函式和閉包(1)

2021-07-02 23:40:56 字數 3130 閱讀 9608

/**

* 函式是swift的重要組成單位,乙個swift程式可以包含很多函式

*///函式定義和呼叫

//定義乙個函式,宣告2個形參,返回int型別

func max(x:int , y:int) -> int

//宣告乙個函式,宣告乙個形參,返回string型別

func sayhi (name:string) -> string

var a =6

var b =9

var result = max(a, b)

println(result)//9

println(sayhi("老師"))//"老師,你好!"

//函式返回值

//1.無返回值,無參

func name()

//2.沒有返回值,有1個形參

func sayname(n:string) ->()

//3.沒有返回值有兩個形參

func showpeople(msg:string,name:string,age:int) ->void

}name()

sayname("huang")

println(showpeople("swift", "c",4))

//4.函式返回值支援元組型別

//返回值是(string,string)

func diva(num:double) ->(string, string)

var result1 = diva(1234.3421)

println("\(result1.0)")

println("\(result1.1)")

//5.為返回值元組指定名稱

func getmaxandmin(nums:[int]) ->(max:int, min:int)

if n < min

}return(max, min)

}var numss = [20

,453

,342

,35,76

,324

,65,14,]

var maxandmin = getmaxandmin(numss)//(.0 453, .1 14)

//遞迴函式,函式呼叫它自身

func fu(n:int) -> int

else

if n ==1 else

}println("\(fu(10))")//10497

//函式的形參

//1.外部形參名及其簡化形式

func girth(width: double,height: double) ->double

println(girth(12

,23.7))

//2.指定外部形參名,外部形參名 區域性變數名 : 形參型別

func girth1(高 height: double,寬 width: double) ->double

println(girth1(高:12.4, 寬:33))

//3.指定外部形參名,當外部形參名和區域性變數名一樣時,可以在區域性變數名前加#,外部形參名 區域性變數名 : 形參型別

func girth2(#height: double,#width: double) ->double

println(girth2(height:23, width:34.3))

//4.可以省略其中乙個區域性變數的外部形參名

func girth3(#height: double, width: double) ->double

println(girth3(height:12.4,45))

//5.設定形參預設值

func people(姓名 name: string = "傑瑞", age: int)

println("\(people(12))")

people(姓名:"jumjum",15)

//6.設定預設形參,預設值應放在後面

func people1( age: int,姓名 name: string = "傑瑞")

println("\(people1(12))")

people1(15,姓名:"jumjum")

//7.取消帶預設值的外部形參名,用_空格代替外部形參名

func people2(age: int, _ name: string = "傑瑞")

println("\(people2(14))")

//8.個數可變的形參(...),乙個函式最多只能包含乙個個數可變形參,個數可變形參的本質是乙個陣列型別的形參

func text(a : int, names : string...)

println(a)

}text(12, "name1","name2")

//9.常量形參和變數形參

//在一些情況下程式希望直接使用函式形參作為變數,形參預設的是常量let宣告,不能在函式體內對形參常量賦值

//使用var定義變數形參

func girth(var #width : double, #height : double) -> double

girth(width:12.4, height:34)

形參,需要把值型別的引數傳入函式內部

//交換兩個引數的值

func swap(inout a : int,inout b : int)

var a =6

var b : int =9

swap(&a, &b)

println("a is \(a),b is \(b)")//"a is 9,b is 6"

//引用型別的引數傳遞

class datawrap

func swa(var dw : datawrap!)

var dw = datawrap()

dw.a =6

dw.b =9

swa(dw)//"dw.a = 9,dw.b = 6"

func swa1(inout dw : datawrap!)

var dw1 : datawrap! = datawrap()

dw1.a =5

dw1.b =9

swa1(&dw1)

//println("\(dw1.a)")//報錯

部分內容來自《瘋狂swift講義》

Swift學習筆記 函式和閉包(2)

1.函式型別 定義乙個變數 int,int int var myfun int int int 定義乙個變數 string void var test string void 計算乙個乘方的函式 func pow base int,exponent int int return result 將po...

Swift 學習筆記 閉包

閉包可以捕獲和儲存其所在上下文中任意常量和變數的引用。這就是所謂的閉合幷包裹著這些常量和變數,俗稱閉包。閉包有三種形式 全域性函式是乙個有名字,但不會捕獲任何值得閉包 巢狀函式是乙個有名字,並可以捕獲其封閉函式域內值的閉包。閉包表示式是乙個利用輕量級語法所寫的可以捕獲其上下文變數或常量值的匿名閉包。...

Swift學習3 函式和閉包

1,函式的返回值可以是元組 2,函式的引數可以有預設值 3,輸入輸出引數 用 可以進行位址傳遞 4,函式型別 可以模擬函式指標,可以作為引數,也可以作為返回值 func stepforward input int int func stepbackward input int int func ch...