Swift-函数返回函数

2020-10-29  本文已影响0人  DavidShawn

在官方文档中,通常喜欢在某个概念中加入不必要的花花绕。比如,为了说明函数中返回函数,通常会举个例子,而这个例子同时有某种小算法在里面,能做个加法,取个最大值什么的。这么做最大的作用就是说明作者很牛叉,功底很深厚(小人之心了,不好意思)。但是往往给新手增加了负担,影响理解。我来试图简化这种介绍模式,同时,也试试能不能给自己写明白。

在普通函数中,函数通常需要返回某种值。

举个最简单的例子:

func outFunc1()  -> String {

    return ("这是一个普通的函数。")

}

print(outFunc1())

>>这是一个普通的函数。

上面这段代码很好理解,我们调用outFunc,加上(),即outFunc(),函数就返回了一串字符,然后将之打印。

然而,更高级一点的用法是,函数也可以返回一个函数。

请看下面的代码。

func outFunc2() -> (() ->String) {

    func innerFunc() ->String{

        return ("这是一个返回的内部函数。")

    }

    return innerFunc

}

print(outFunc2()())

>>这是一个返回的内部函数。

outFunc2 与之前的outFunc1结构是一样的,都是返回某种值,不同的是,我在outFunc2中替换了一个innerFunc。返回值的时候,也返回这个innerFunc。这样,我们在调用outFunc2时,就得到了内部函数innerFunc。

解析这里的逻辑。首先,outFunc2(),得到的其实是return出来的innerFunc。想要继续执行这个innerFunc,就再加个(),即outFunc2()()。

总结,基本思想就是将内部的函数看成一个整体。

同样重要的是,要及时意识到,这里的整体是个函数,能完成某种功能。

上一篇下一篇

猜你喜欢

热点阅读