你如何指向Swift中的指针?在Objective-C中,我有一个函数,我会递归调用,以便我可以跟踪递归的数量,但我很难知道如何在Swift中实现这一点。
NSNumber *recursionCount = [NSNumber numberWithInteger:-1];
[self doRecursion:&recursionCount];
- (void)doRecursion:(NSNumber **)recursionCount {
// I'm sure this is a terrible way to increment, but I have limited Objective-C experience
// and this worked, so I moved on after failing to find a decent var++ equivalent :-(
int addThis = (int)i + 1;
*recursionCount = [NSNumber numberWithInt:[*recursionCount intValue] + addThis];
[self doRecursion:recursionCount];
}
在为这篇文章剪下这个样本的过程中,我最终创建了一个永无止境的循环,但是你知道我如何记住每次递归的值。
有人知道如何在Swift中执行此操作吗?感谢。
答案 0 :(得分:8)
非常不鼓励在swift中使用指针。
要将作为参数传递的变量更改为函数,必须使用inout
修饰符通过引用传递它(类似于传递其指针)。我已经将函数的逻辑更改为在10次迭代后停止:
func doRecursion(inout recursionCount: Int) -> Int {
if (recursionCount < 10) {
++recursionCount
doRecursion(&recursionCount)
}
return recursionCount
}
然后你可以使用:
来打电话var counter: Int = -1
let x = doRecursion(&counter) // Prints 10 in playground
建议阅读:In-Out Parameters