首页 > 解决方案 > 有没有办法让 Swift for 循环引用外部变量?

问题描述

有没有办法在for循环中引用外部变量?

例如

var output = ""

var data = ["a", "b", "c"]

let size = data.count
var i = 0

//
// How can I make this loop referring to variable "var i = 0"?
//
for i in 0..<size-1 {
    output.append(data[i])
    output.append("\n")
}

//
// Will not be executed because i remains 0
//
if (i == size-1) {
    output.append(data[i])
}

我发现的唯一解决方法是

var output = ""

var data = ["a", "b", "c"]

let size = data.count
var i = 0

while (i < size-1) {
    output.append(data[i])
    output.append("\n")
    i = i + 1
}

if (i == size-1) {
    output.append(data[i])
}

我想知道,有没有办法让 Swift for 循环引用外部变量?

标签: swift

解决方案


for您可以通过在循环中使用不同的变量名然后将其分配给外部变量来保持大致相同的语法。在您的示例中,命名变量i将在循环范围内隐藏外部变量(如注释中所述)for,从而使外部变量在for循环范围内不可访问。

目前 Swift 中没有强制for循环的当前值绑定到现有变量的语法。

var output = ""

var data = ["a", "b", "c"]

let size = data.count
var i = 0

for j in 0..<size-1 {
    i = j
    output.append(data[i])
    output.append("\n")
}

if (i == size-1) {
    output.append(data[i])
}

推荐阅读