swift中的函数的使用,嵌套

// 函数

// 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 以后的方法


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值