++ 已弃用 - “+= 1 不能解决问题”
++ is deprecated - "+= 1 is not solving the issue"
将 Xcode 更新到 7.3 后,我收到一些警告:
'++' is deprecated: it will be removed in Swift 3
出现警告的代码是合并两个数组的函数:
arr4.append(arr1[i++])
我试过更改它:
arr4.append(arr1[i += 1])
但我收到一条错误消息:
Cannot subscript a value of type '[[String]]' with an index of type
'()'
完整代码为:
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)
代码:
arr4.append(arr1[i])
i += 1
如果你非要单行完成的话。你可以,但它看起来很难看:
arr4.append(arr1[(i += 1) - 1])
我不确定。测试一下。
使用:
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 ++;
不同的输出。)
将 Xcode 更新到 7.3 后,我收到一些警告:
'++' is deprecated: it will be removed in Swift 3
出现警告的代码是合并两个数组的函数:
arr4.append(arr1[i++])
我试过更改它:
arr4.append(arr1[i += 1])
但我收到一条错误消息:
Cannot subscript a value of type '[[String]]' with an index of type '()'
完整代码为:
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)
代码:
arr4.append(arr1[i])
i += 1
如果你非要单行完成的话。你可以,但它看起来很难看:
arr4.append(arr1[(i += 1) - 1])
我不确定。测试一下。
使用:
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 ++;
不同的输出。)