進(jìn)階部分
1.函數(shù)參數(shù) -- 外部參數(shù)名 2.下滑線 -- _ 3.函數(shù)參數(shù) -- 設(shè)置參數(shù)默認(rèn)值 4.函數(shù)類型 -- 函數(shù)作為函數(shù)的參數(shù),返回值 5.函數(shù)嵌套
1.函數(shù)參數(shù) - 外部參數(shù)名
func 函數(shù)名(外部參數(shù)名 局部參數(shù)名: 參數(shù)類型) {}
要注意的是: -- 外部參數(shù)名只能外部使用,內(nèi)部參數(shù)名只能內(nèi)部使用 -- 并非每一個參數(shù)都需要設(shè)置外部參數(shù)名,未設(shè)置外部參數(shù)名的參數(shù)可以當(dāng)作外部參數(shù)名和局部參數(shù)名一樣 也就是對想用對參數(shù)用,不想用的不用??
// 字符串拼接
// 外部參數(shù)名是為了讓參數(shù)在外部調(diào)用時能明確參數(shù)的含義,內(nèi)部調(diào)用時參數(shù)簡短已用
// - s1: 外部參數(shù)名為firstStr 內(nèi)部只能使用s1,外部只能使用 firstStr
// - targetStr: 內(nèi)外都是用 targeyStr
func appendString(firstStr s1 : String, targetStr : String) -> String
{
return s1 + targetStr;
}
print(appendString(firstStr: "123", targetStr: "456"));
2.下滑線 _
外部參數(shù)如果使用
_
,在外部掉用函數(shù)時候,會省略形參的名字
// 字符串拼接
//
// - s1: 外部參數(shù)名為`_`內(nèi)部只能使用s1,外部無參數(shù)名
// - targetStr: 內(nèi)外都是用 targeyStr
func appendString(_ s1 : String, targetStr : String) -> String
{
return s1 + targetStr;
}
print(appendString("123", targetStr: "456"));
3.函數(shù)參數(shù) - 設(shè)置參數(shù)默認(rèn)值
func 函數(shù)名(參數(shù) :類型=默認(rèn)值){}
說明 1:如果參數(shù)不賦值,參數(shù)值就采用默認(rèn)值 2:如果一個參數(shù)有默認(rèn)值,那么在調(diào)用的時候就不一定需要傳入?yún)?shù),可以使用默認(rèn)值 3:一般在聲明一個函數(shù)的時候,都把有默認(rèn)參數(shù)值的參數(shù)放到最后,而必須賦值的參數(shù)放在前面。
// 測試參數(shù)的默認(rèn)值
// 建議帶默認(rèn)值的參數(shù)放在最后,但是并不代表你不可以放前面,只是為了代碼的可讀性放后面比較好
// - value1: 沒有默認(rèn)值的參數(shù)在方法調(diào)用時必須傳值
// - value2: 有默認(rèn)值的參數(shù)在方法調(diào)用時可以不傳值,使用默認(rèn)值
// - value3: 沒有默認(rèn)值的參數(shù)在方法調(diào)用時必須傳值
// - value4: 有默認(rèn)值的參數(shù)在方法調(diào)用時可以不傳值,使用默認(rèn)值
func testDefaultValue(value1: Int,value2: Int = 2,value3: Int,value4: Int = 4)
{
let sum = value1 + value2 + value3 + value4;
print(sum);
}
testDefaultValue(value1: 1, value3: 3)
testDefaultValue(value1: 1, value2: 2, value3: 3)
testDefaultValue(value1: 1, value3: 3, value4: 4)
testDefaultValue(value1: 1, value2: 2, value3: 3 , value4: 7)
/*
不要再定義以上調(diào)用的四種函數(shù)的實現(xiàn),否則會發(fā)生未知錯誤?
要么會發(fā)生方法重復(fù)直接報錯,要么就是會發(fā)生方法覆蓋。
具體會怎樣可以自己試驗,這里我就不在舉例說明了,情況太亂,
越說會讓人感覺越復(fù)雜
*/
4.函數(shù)類型
在 Swift 中,使用函數(shù)類型就像使用其他類型一樣。例如,你可以定義一個類型為函數(shù)的常量或變量,并將適當(dāng)?shù)暮瘮?shù)賦值給它
類型公式: 就是把函數(shù)的公式,去除
func
,去除參數(shù)名
,去除{}
的剩余部分
(參數(shù)類型1,參數(shù)類型2...)->返回值類型
func sum(a: Int, b: Int) -> Int {
return a + b
}
var addition: (Int, Int) -> Int
addition = sum
print("輸出結(jié)果: \(addition(40, 89))")
既然有函數(shù)類型,那么函數(shù)類型也可以作為函數(shù)參數(shù)及返回值
//函數(shù)作為參數(shù)
func sum(a: Int, b: Int) -> Int {
return a + b
}
//sunNumber 是一個函數(shù)類型,調(diào)用時傳入一個函數(shù)
func test(sumNumber: (Int, Int) -> Int, a: Int, b: Int) {
print("輸出結(jié)果: \(sumNumber(a, b))")
}
test(sumNumber: sum, a: 10, b: 20)
//函數(shù)作為返回值
func test() ->(Int) -> Int {
//內(nèi)嵌函數(shù)
func add(a:Int) -> Int{
return a+1;
}
return add;
}
test()(20)
5.函數(shù)嵌套
上面的示例使用到了內(nèi)嵌函數(shù),也就是swift函數(shù)中可以聲明實現(xiàn)另一個函數(shù)
你可以繼續(xù)學(xué)習(xí)Swift3之閉包