函數(shù)
1.基本使用:func來(lái)聲明一個(gè)函數(shù),使用名字和參數(shù)來(lái)調(diào)用函數(shù),使用->來(lái)指定函數(shù)返回值遇革,例如:
func sum(x1:Int,x2:Int)->Int{
return x1+x2
}
2.使用元組返回多個(gè)值
func calculateCount(string:String)->(Int,Int,Int){
? ? ? ? ? ? ?var vow = 0, con = 0, oth = 0
? ? ? ? ? ? ?for character in string.characters{
? ? ? ? ? ? switch String(character).lowercaseString{
? ? ? ? ? ? ? ? ?case "a","e","i","o","u":
? ? ? ? ? ? ? ? ?++vow
? ? ? ? ? ? ? ? case "b","c","d","f","g","h","j","k","l","m","n","p","q","r","s", ? ? ?"t","v","w","x","y","z":
? ? ? ? ? ? ? ? ++con
? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ?++oth
? ? ? ? ? }
? ? }
? ? ? ? ? ?return(vow,con,oth)
}
3.函數(shù)的參數(shù)數(shù)量是可變的,用一個(gè)數(shù)組來(lái)獲取组民,例如:
?func sumOf(numbers :Int...)->Int{
? ? ? ? ? ? ? var sum :Int = 0
? ? ? ? ? ? ? for number in numbers{
? ? ? ? ? ? ? ? ? ? ?sum = sum + number
? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? return sum
? }
? ? ?print("sum = " + String(sumOf(1,2,3,4)))
4.函數(shù)可以嵌套函數(shù)黄伊。
被嵌套的函數(shù)可以訪問(wèn)外側(cè)函數(shù)的變量,使用嵌套函數(shù)來(lái)重構(gòu)一個(gè)太長(zhǎng)或者太復(fù)雜的函數(shù)
func addCount(numbers : Double...){
? ? ? ? ? ?func add(var y:Int)->Int{
? ? ? ? ? ? ? ? ? ? ? ? ?y += 5
? ? ? ? ? ? ? ? ? ? ? ? return y
? ? ? ? ? }
? ? ? ? ? ? ? ? ?print(add(10))
}
5.函數(shù)可以作為另一個(gè)函數(shù)的返回值
func isNow()->(Bool ->Int){ // (Bool ->Int)是將要調(diào)用函數(shù)的參數(shù)和返回值
func isToday(time: Bool)-> Int{
if time == true{
print("今天")
return 1
} else{
print("非今天")
return 2
}
}
return isToday
}
var now = isNow()
now(false)
6.函數(shù)當(dāng)做參數(shù)傳入另一個(gè)函數(shù)
// 小于20的數(shù)字
func lessThanTwenty(list:Int...)->Bool{
for num in list{
if num < 20{
return true
}
}
return false
}
// 奇數(shù)
func singleNum(num:Int..., condition:(Int...)-> Bool) -> [Int]{
var singleNumList = [Int]()
for item in num {
if condition(item) && item % 2 != 0{
singleNumList.append(item)
}
}
return singleNumList
}
print(singleNum(1,5,7,23, condition: lessThanTwenty))
7.函數(shù)參數(shù)名
外部參數(shù)名:有時(shí)當(dāng)你調(diào)用一個(gè)函數(shù)將每個(gè)參數(shù)進(jìn)行命名是非常有用的舱痘,以表明你傳遞給函數(shù)的每個(gè)參數(shù)的目的。
如果你希望用戶(hù)函數(shù)調(diào)用你的函數(shù)時(shí)提供參數(shù)名稱(chēng),除了設(shè)置本地地的參數(shù)名稱(chēng)衔蹲,也要為每個(gè)參數(shù)定義外部參數(shù)名稱(chēng)肢娘。你寫(xiě)一個(gè)外部參數(shù)名稱(chēng)在它所支持的本地參數(shù)名稱(chēng)之前,之間用一個(gè)空格來(lái)分隔:
func lessThanTwenty(outList list:Int...)->Bool{
for num in list{
if num < 20{
return true
}
}
return false
}
lessThanTwenty(outList: 1)