swift函數(shù)是個重點(diǎn),但是不難理解,特殊的我會說明的。
函數(shù)的定義
/// 函數(shù)定義,格式 函數(shù)名(形參列表)->返回值類型
func sum(x:Int,y:Int) -> Int {
return x + y
}
在外部調(diào)用print(sum(x: 10, y: 50)),這個說明一下:
//swift1.0調(diào)用的方式 sum(10,50)所有的形參都會省略
//1.0 其他的程序員非常喜歡
//swift2.0調(diào)用的方式 sum(10, y: 50),第一個形參的名稱會省略
//swift3.0調(diào)用的方式 OC的程序員非常喜歡
外部參數(shù)
func sum1(num1 x:Int,num2 y:Int) -> Int {
return x + y
}
調(diào)用print(sum1(num1: 30, num2: 60)),說明一下:
//外部參數(shù)就是在形參前加一個名字
//外部參數(shù)不會影響函數(shù)內(nèi)部細(xì)節(jié)
//外部參數(shù)會讓外部調(diào)用方看起來更加的直觀
另外一種寫法:
func sum2(_ x:Int,_ y:Int) -> Int {
//在swift中_就是可以忽略任意不感興趣的內(nèi)容
//Immutable value 'i' was never used; consider replacing with '_' or removing it
// i從來沒有被用到,建議使用_替代
//for i in 0..<10 {
for _ in 0..<10 {
print("hello world")
}
return x + y
}
調(diào)用print(sum2(40, 60)),如果使用下劃線_,在外部調(diào)用函數(shù)時,會忽略形參的名字.
函數(shù)的默認(rèn)值
func sum3(x:Int = 1,y:Int = 2) -> Int {
return x + y
}
然后我們這么調(diào)用:
print(sum3())
print(sum3(x: 10, y: 20))
print(sum3(x: 10))
print(sum3(x: 30))
打印的值是:
3
30
12
32
說明:
//通過給參數(shù)設(shè)置默認(rèn)值,在調(diào)用的時候,可以任意組合參數(shù),如果不指定的,就使用默認(rèn)值
// OC中需要定義很對的方法,以及方法實(shí)現(xiàn),最終調(diào)用包含所有參數(shù)的那個函數(shù)
與OC對比一下:

圖.png
可以看出OC中如果想組合不同參數(shù)的話就得寫很多個方法,第一個帶一個參數(shù),第二個帶兩個參數(shù),舉個例子就是,如果你想使用通過url加載圖片的話就用第一個,如果還想帶placeholder圖的話就使用第二個,所以你需要寫很多個方法滿足不同的需求,一般為了達(dá)到效果,調(diào)用那個最長的函數(shù)。如果在swift中的話,直接就可以寫一個,然后定義一個默認(rèn)值,如果需要改哪個參數(shù)的話就調(diào)的時候給個值就可以,其他的還是使用默認(rèn)的值,調(diào)用起來比較方便。
無返回值的情況
/*
知道就行,主要用在閉包,在閱讀第三方代碼時保證能夠看懂
-直接省略
-()
-void
*/
func demo1() {
print("哈哈")
}
//->輸出到目標(biāo)
func demo2() -> () {
print("呵呵")
}
func demo3 () -> Void {
print("嘻嘻")
}
這幾種就是什么返回值都沒有。
總結(jié)
函數(shù)比較重要,要多多琢磨,加深理解。