函数
1.基本使用:func来声明一个函数,使用名字和参数来调用函数,使用->来指定函数返回值,例如:
func sum(x1:Int,x2:Int)->Int{
return x1+x2
}
2.使用元组返回多个值
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.函数的参数数量是可变的,用一个数组来获取,例如:
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.函数可以嵌套函数。
被嵌套的函数可以访问外侧函数的变量,使用嵌套函数来重构一个太长或者太复杂的函数
func addCount(numbers : Double...){
func add(var y:Int)->Int{
y += 5
return y
}
print(add(10))
}
5.函数可以作为另一个函数的返回值
func isNow()->(Bool ->Int){ // (Bool ->Int)是将要调用函数的参数和返回值
func isToday(time: Bool)-> Int{
if time == true{
print("今天")
return 1
} else{
print("非今天")
return 2
}
}
return isToday
}
var now = isNow()
now(false)
6.函数当做参数传入另一个函数
// 小于20的数字
func lessThanTwenty(list:Int...)->Bool{
for num in list{
if num < 20{
return true
}
}
return false
}
// 奇数
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.函数参数名
外部参数名:有时当你调用一个函数将每个参数进行命名是非常有用的,以表明你传递给函数的每个参数的目的。
如果你希望用户函数调用你的函数时提供参数名称,除了设置本地地的参数名称,也要为每个参数定义外部参数名称。你写一个外部参数名称在它所支持的本地参数名称之前,之间用一个空格来分隔:
func lessThanTwenty(outList list:Int...)->Bool{
for num in list{
if num < 20{
return true
}
}
return false
}
lessThanTwenty(outList: 1)