在自己内部调用一个函数

时间:2016-02-24 19:46:05

标签: swift

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

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

func theFunc() {
count++ 
if count < 4 {
thFunc()
}
}

1 个答案:

答案 0 :(得分:5)

这就是所谓的递归,它完全合法:

var count = 0
func theFunc() {
    print(count)
    count += 1
    if count < 4 {
        theFunc()
    }
}
theFunc() // 0 1 2 3

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

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