函數(shù)的定義和調(diào)用
函數(shù)是一個(gè)組織在一起的程序代碼集合,用來(lái)完成某個(gè)特定的功能。Swift使用的關(guān)鍵字func進(jìn)行函數(shù)的定義
函數(shù)的定義格式如下
func 函數(shù)名(參數(shù)變量:類(lèi)型) -> 返回類(lèi)型 {
程序語(yǔ)句
return 結(jié)果
}
定義一個(gè)無(wú)參數(shù)并且無(wú)返回類(lèi)型的函數(shù)
func sayhello(){
print("hello Swift")
}
函數(shù)的調(diào)用
sayhello()
定義一個(gè)返回Int類(lèi)型的函數(shù)
func sum(num1:Int,num2:Int) -> Int {
return num1+num2
}
在Swift的環(huán)境中,可以為函數(shù)的參數(shù)設(shè)置默認(rèn)值
func sum1(num1:Int,num2:Int,num3:Int=3) -> Int {
return num1+num2+num3
}
設(shè)置可變的函數(shù)參數(shù)數(shù)量
func sum2(numbers:Int...) -> Int {
var number=0
for num in numbers {
number += num;
}
return number;
}
函數(shù)作為參數(shù)和返回類(lèi)型
func getMaxNum(num1:Int,num2:Int) -> Int {
return num1>num2 ?num1:num2
}
func getMinNum(num1:Int,num2:Int) -> Int {
return num1<num2 ?num1:num2
}
//這里是3個(gè)參數(shù)分別是
//funNmae:(Int,Int)->Int
//num1
//num2
func getRes(funNmae:(Int,Int)->Int,num1:Int,num2:Int){
print(funNmae(num1,num2));
}
調(diào)用函數(shù)作為參數(shù)和返回類(lèi)型的函數(shù)
getRes(funNmae: getMaxNum, num1: 1, num2: 2)
函數(shù)作為返回類(lèi)型
func getResut(number1:Int,number2:Int)->(Int,Int)->Int {
return number1<number2 ?getMinNum:getMaxNum
}
//調(diào)用函數(shù)作為返回類(lèi)型的函數(shù)
let fun = getResut(number1: 2, number2: 3);
print(fun(7,5))
元組作為函數(shù)的返回類(lèi)型,實(shí)現(xiàn)多個(gè)返回值
func getResut1() -> (name:String,age:Int,sex:String) {
return (name:"小妹",age:12,sex:"女")
}
使用函數(shù)類(lèi)型
使用函數(shù)類(lèi)型就跟使用其他的類(lèi)型一樣。比如可以定義一個(gè)常量和變量,其類(lèi)型就是函數(shù),而且可以給這個(gè)函數(shù)賦值
func getResut2(number1:Int,number2:Int)->Int {
return (number1+number2)
}
//調(diào)用
let res1 = getResut2
print(res1(1,3))
函數(shù)的輸入輸出參數(shù)
如果想要一個(gè)函數(shù)可以修改參數(shù)的值,并且這些修改在函數(shù)結(jié)束調(diào)用后仍然存在,那就定義輸入輸出參數(shù),在參數(shù)類(lèi)型的前面添加inout關(guān)鍵字來(lái)實(shí)現(xiàn)
同時(shí),傳入函數(shù)的參數(shù)不能是常量必須是變量,當(dāng)傳入的參數(shù)作為輸入輸出參數(shù)時(shí),需要在參數(shù)面前加入&符號(hào),表示這個(gè)參數(shù)值是可以被修改的
func getResut4(number1:inout Int,number2: inout Int) {
let tem=number1
number1=number2
number2=tem
}
//調(diào)用
var num1=1
var num2=2
getResut4(number1: &num1, number2: &num2)
print(num2)
函數(shù)的遞歸用法
func getResut5(num:Int) -> Int {
if (num<=1)
{
return 2
}
return getResut5(num:num-2)+getResut5(num:num-1)
}
常用的內(nèi)置函數(shù)
- min最小值函數(shù)
print(min(1, 2))
- max最大值函數(shù)
print(max(2, 10))
- filter函數(shù)通常用于查找在數(shù)組元素中,滿足指定條件的元素。例如查找1~10之間可以被數(shù)字3整除的數(shù)字
for index in (1...10).filter({$0%3==0}) {
print(index)
}
- map函數(shù)通常用于將數(shù)組中的每個(gè)元素,通過(guò)指定的方法進(jìn)行轉(zhuǎn)換摊崭。例如將一個(gè)整數(shù)數(shù)組每個(gè)元素乘以3
for index in (1...3).map({$0*3}) {
print(index)
}
- reduce函數(shù)可以把數(shù)組元素組合計(jì)算為一個(gè)值
let res5=[1,2,3,4].reduce(0){$0+$1}
print("結(jié)果 ",res5);