// 函数
// swift 中 函数的关键字叫 func
//func 函数名 (参数) -> 返回值{
// 实现部分
//}
//函数的声明与实现
func 问候语 (name:String, day:String) ->String{
return"hello, \(name), today is\(day)"
}
// 函数调用
// 在xcode7之前不用加
print(问候语("lisa","星期三"))
在xcode7之后就需要加标签,如下
//print(问候语("lisa", day :"星期三"))
// 元组作为函数返回值
// 传入一个int型的数组,返回最大值,最小值,
func 计算 (var 数组: [Int])->(max:Int, min:Int, sum:Int){
var max = 数组[0]
var min = 数组[0]
var sum = 0
for itemin 数组{
if max < item{
max = item
}
if min > item{
min = item
}
sum += item
}
return (max, min, sum)
}
let 计算结果 = 计算([56,56,88,97,15,64,46])
print(计算结果)
print(" max =\(计算结果.max), min =\(计算结果.min) \n")
// 函数的嵌套函数
func returnFifteen() ->Int{
var ten = 10
func addFive(){
ten += 5
}
addFive()
addFive()
return ten
}
print(returnFifteen())
// 函数作为返回值的情况,返回函数的参数列表 -> 返回函数的返回值
func makeFunc () -> (Int->Int){
func addFive(a:Int) ->Int{
return a + 5
}
returnaddFive // 它的参数就等于func1 传入的参数
}
var func1 = makeFunc()
print("\n func1(12) =\(func1(12)) \n")
// 实现makeComputerFunc 这个函数,传入一个+-*/,返回值返回一个函数,调用函数传入两个值,然后返回这两个数相加计算结果,(提示:可以定义4个函数)
func makeComputerFunc (operation:String) -> ((Int,Int) -> Int){
switch operation{
case"+":
func add(num1:Int, num2:Int) ->Int{
return num1 + num2
}
returnadd
case"-":
func sub(num1:Int, num2:Int) ->Int{
return num1 - num2
}
returnsub
case"*":
func multi(num1:Int, num2:Int) ->Int{
return num1 * num2
}
returnmulti
case"/":
func div(num1:Int, num2:Int) ->Int{
return num1 / num2
}
returndiv
default:
func none(num1:Int, num2:Int) ->Int{
return 0
}
returnnone
}
}
var func3 = makeComputerFunc("+")
print(func3(45,89))
// 函数作为参数的情况
// 第一层函数,参数为一个数组,和一个比较的函数,返回值是一个bool类型
// 比较函数,判断第一层函数传入的数组中是否有大于10的数,如果大于10返回true,如果小于10返回false
func hasAnyMatches(numbers:[Int], condition:(Int)->Bool) -> Bool{
for num in numbers {
if condition(num){
return true
}
}
return false
}
func moreThanTen (num:Int) -> Bool {
if num > 10 {
return true
}else{
return false
}
}
print(hasAnyMatches([5,3,15,6,5,4], moreThanTen))
// print(hasAnyMatches([5,3,15,6,5,4], condition: moreThanTen)) // xcode7 以后的方法