我有一个函数,在某些情况下我希望它连续两次使用,有没有办法在自己内部调用函数
等等,我的功能要长得多,做这样的事情可以节省很多时间func theFunc() {
count++
if count < 4 {
thFunc()
}
}
答案 0 :(得分:5)
这就是所谓的递归,它完全合法:
var count = 0
func theFunc() {
print(count)
count += 1
if count < 4 {
theFunc()
}
}
theFunc() // 0 1 2 3
唯一的诀窍就是不要过于夸张,因为你冒着资源耗尽的风险,不要忘记放置某种“塞子”(比如你的if count < 4
),以免你永远逃避,导致(讽刺的)堆栈溢出。
[对于专家来说:有一些语言,例如LISP,针对递归进行了优化,并且递归实际上优先于循环!但斯威夫特并不是其中之一。]