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

时间:2014-09-10 12:02:48

标签: objective-c pointers recursion 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];
}

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

有人知道如何在Swift中执行此操作吗?感谢。

1 个答案:

答案 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