将Xcode更新为7.3后,我有一些警告说:
'++'已弃用:它将在Swift 3中删除
出现警告的代码是合并两个数组的函数:
arr4.append(arr1[i++])
我尝试过更改它:
arr4.append(arr1[i += 1])
但我收到错误说:
不能使用索引类型下标类型为'[[String]]'的值 '()'
完整的代码是:
let arr1 = [["aaa","111"],["bbb","222"],["ccc","333"]]
let arr2 = [["ddd","444"],["eee","555"],["fff","666"]]
var arr4 = zip(arr1, arr2).reduce([]) { ( newArr, p:(Array<String>, Array<String>)) -> [[String]] in
var arr = newArr
arr.append(p.0)
arr.append(p.1)
return arr
}
var i = arr4.count / 2
while i < arr1.count {
arr4.append(arr1[i++]) // WARNING
}
while i < arr2.count {
arr4.append(arr2[i++]) // WARNING
}
print(arr4)
答案 0 :(得分:2)
使用:
arr4.append(arr1[i])
i += 1
改变的动机是易读性 - 确保正确拼写步骤,减少歧义。表达式a += 1
的结果是void
类型 - 它执行某些操作但不评估任何内容 - 表示为空元组()
,并且不能用作数组索引。
(旁白:+= 1
也不是C中++
的直接替代。
int a = 3;
int b = a += 1;
NSLog(@"%d %d", a, b);
...将产生与等效b = a ++;
不同的输出。)
答案 1 :(得分:1)
<强>代码:强>
arr4.append(arr1[i])
i += 1
如果你坚持一行就行。你可以,但它看起来很难看:
arr4.append(arr1[(i += 1) - 1])
我不确定。测试它。