Swift有没有类似C ++引用的东西?

时间:2014-09-29 16:14:52

标签: swift

假设某些可能很大的代码块需要使用数组A或数组B而不是编写

switch (x) {
case a:
  arrayA.append(X)
case b:
  arrayB.append(X)
}

我想写类似下面的C ++代码:

auto& arr = (x == a ? arrayA : arrayB);
arr.push_back(X);

当然,在现实生活中,案例并不那么简单,但我希望你明白这一点:我只想设置一次引用,之后不关心我正在使用哪个数组。

1 个答案:

答案 0 :(得分:1)

我不知道有任何获取数组指针的方法 - 使用inout修饰符传递引用的唯一情况是函数参数。

然而,闭包非常灵活,并且可以通过多种方式使用 - 我认为这是其中一种情况。我的想法是创建2个闭包,第一个附加到arrayA,第二个附加到arrayB,然后存储要在变量中使用的闭包,并使用它:

typealias PushToArrayClosure = (value: Int) -> Void

var arrayA = [1, 2, 3]
var arrayB = [4, 5, 6]
let condition = false

let pushA = { (value: Int) in
    arrayA.append(value)
}

let pushB = { (value: Int) in
    arrayB.append(value)
}

let pushToArray: PushToArrayClosure = condition ? pushA : pushB

pushToArray(value: 7)

arrayA // contains [1, 2, 3]
arrayB // contains [4, 5, 6, 7]