Swift 中的 for-in 循环

看下面的代码,会编译不通过. 原来在 Swift 中 for-in 循环的变量是只读的.

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

for str in stringArray {
    //Playground execution failed: Test.playground:10:9: error: cannot assign to 'let' value 'str'
    str = "d"
}
println(stringArray)

也可以通过用 var 指定为可变的

for (var str) in stringArray {
    str = "d"
}

这里虽然编译通过了, 但实际上 stringArray 的值并没有被改变. 想到 java 里面的做法好像也是这样的:

public static void main(String[] args)
    {
        String[] stringArray = {"a", "b", "c"};
        for (String str : stringArray)
        {
            str = "d";
        }

        System.out.println(stringArray[0] + "~" + stringArray[1] + "~" + stringArray[2]);
    }

编译不会报错, 但实际上并不能改变数组中元素的值.

那么, 只有用传统的 for 循环写法了:

for var i=0;i<stringArray.count;i++ {
    stringArray[i] = "d"
}
2015-07-27 20:101