函数类型作为返回类型

函数类型作为返回类型
你可以用函数类型作为另一个函数的返回类型。你需要做的是在返回箭头(->)后写一个完整的函数类型。

下面的这个例子中定义了两个简单函数,分别是 forward(_:)backward(_:)forward(_:)函数返回一个比输入值大 1 的值。backward(_:) 函数返回一个比输入值小 1 的值。这两个函数的类型都是 (Int) -> Int:

    fileprivate func backward(_ input: Int) -> Int {
        return input - 1
    }

    fileprivate func forward(_ input: Int) -> Int {
        return input + 1
    }

    如下名为 moveToNearZero(back:) 的函数,它的返回类型是 (Int) -> Int 类型的函数。moveToNearZero(back:) 根据布尔值 back 来返回 forward(_:) 函数或 backward(_:) 函数

    fileprivate func moveToNearZero(back:Bool) -> (Int) -> Int {
        return back ? backward : forward
    }



    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

        var currentNumb = 3
        let move = moveToNearZero(back: currentNumb == 3)
        // move 现在指向 backward() 函数。

/*
上面这个例子中计算出从 currentNumb 逐渐接近到0是需要向正数走还是向负数走。currentNumb 的初始值是 3,这意味着 currentNumb == 3 为真(true),这将使得 moveToNearZero(_:) 返回 backward(_:) 函数。一个指向返回的函数的引用保存在了 move常量中。
*/
        while currentNumb != 0 {
            currentNumb = move(currentNumb)
            print(currentNumb)  
        }  
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值