指向Swift函数中指针参数的指针

Rai*_*tle 2 recursion pointers objective-c swift

你如何指向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];
}
Run Code Online (Sandbox Code Playgroud)

在为这篇文章剪切这个样本的过程中,我最终创建了一个永无止境的循环,但是你知道我如何记住每次递归的值.

有人知道如何在Swift中这样做吗?谢谢.

Ant*_*nio 8

强烈建议不要在swift中使用指针.

要将作为参数传递的变量更改为函数,必须使用inout修饰符通过引用传递它(类似于传递其指针).我已经将函数的逻辑更改为在10次迭代后停止:

func doRecursion(inout recursionCount: Int) -> Int {
    if (recursionCount < 10) {
        ++recursionCount
         doRecursion(&recursionCount)
    }

    return recursionCount
}
Run Code Online (Sandbox Code Playgroud)

然后你可以使用:

var counter: Int = -1
let x = doRecursion(&counter) // Prints 10 in playground
Run Code Online (Sandbox Code Playgroud)

建议读数:输入输出参数