在自己内部调用一个函数

Tar*_*erw 4 swift

我有一个函数,在某些情况下我希望它连续使用两次,有没有办法在其内部调用函数

类似的东西,我的功能要长得多,做这样的事情可以节省很多时间

func theFunc() {
count++ 
if count < 4 {
thFunc()
}
}
Run Code Online (Sandbox Code Playgroud)

mat*_*att 7

这称为递归,它是完全合法的:

var count = 0
func theFunc() {
    print(count)
    count += 1
    if count < 4 {
        theFunc()
    }
}
theFunc() // 0 1 2 3
Run Code Online (Sandbox Code Playgroud)

唯一的诀窍就是不要过于沉重,因为你冒着资源耗尽的风险,不要忘记放置某种"塞子"(比如你的if count < 4),以免你永远逃脱,导致(讽刺的)堆栈溢出.

[专家额外:有一些语言,如LISP,针对递归进行了优化,并且递归实际上优先于循环!但斯威夫特并不是其中之一.]