【发布时间】:2015-03-04 22:33:01
【问题描述】:
此方法在 Swift 的最新稳定版本中运行良好,但在 Swift 1.2 中无法编译:
final func rotateBlocks(orientation: Orientation) {
if let blockRowColumnTranslation:Array<(columnDiff: Int, rowDiff: Int)> = blockRowColumnPositions[orientation] {
for (idx, (columnDiff:Int, rowDiff:Int)) in enumerate(blockRowColumnTranslation) {
blocks[idx].column = column + columnDiff
blocks[idx].row = row + rowDiff
}
}
}
这一行:
for (idx, (columnDiff:Int, rowDiff:Int)) in enumerate(blockRowColumnTranslation) {
抛出以下错误:
“无法表示元组转换”(index:Int, element:(columnDiff:Int,rowDiff:Int)) 到“(Int, (Int, Int))”
关于这里发生了什么以及如何解决它的任何想法?
【问题讨论】:
-
我得到了在 Swift 1.2 中编译的代码,但不得不对
blockRowColumnPositions、Orientation等未列出类型的确切声明和/或推断类型进行大量猜测. 将其提炼成一个应该 (/did) 编译的完整文件。