前言:
本篇仅为视频学习笔记
嵌套函数(Nested Function)
★ 将函数定义在函数内部
func forward(_ forward: Bool) -> (Int) -> Int { func next(_ input: Int) -> Int { return input + 1 } func previous(_ input: Int) -> Int { return input - 1 } return forward ? next : previous } forward(true)(3) // 4 forward(false)(3) // 2
我们看这个forward函数,它返回值类型是 (Int) -> Int 函数类型,next和previous函数,是符合条件的,而且这两个呢,我只会用在forward里面,我完全可以将这两个函数定义在forward里面。
那么,到时候根据传进来的布尔类型Bool来决定返回谁,外面只需要传参拿到这两个函数直接用就可以了,那就相当于外面就不能直接调用next和previous这两个函数了,只能通过forward函数,来间接调用next跟previous。
如果你开发中有什么需求,你希望某些函数的,不希望被外面直接调用。说白了,你现在是不希望外面直接调用next什么的。那么像这种情况的话,你就可以将函数定义在另外一个函数里面,通过外层函数来间接调用里面的函数。里面可能会有一些流程控制,去控制你去调用哪个家伙