这里有新的Swift爱好者!我正在关注Rey Wenderlich的Candy Crush tutorial并在乘以两个Int
值时出错。我知道Swift是严格打字的,所以原因是什么?我不允许在Swift中这样做吗?请注意我遇到问题的error
条评论。非常感谢任何正确方向的帮助!
class Array2D<T> {
let columns: Int
let rows: Int
let array: Array<T>
init(columns: Int, rows: Int) {
self.columns = columns
self.rows = rows
array = Array<T?>(count: rows*columns, repeatedValue: nil) // ERROR: could not find an overload for '*' that accepts the supplied arguments
}
subscript(column: Int, row: Int) -> T? {
get {
return array[row*columns + column]
}
set {
array[row*columns + column] = newValue // ERROR: could not find an overload for '*' that accepts the supplied arguments
}
}
}
答案 0 :(得分:4)
将数组更改为T?
类型。
在第一种情况下,您尝试将类型为T?
的数组分配给类型为T
的数组。在第二步中,您尝试将newValue
类型T?
分配给类型T
的数组元素。
更改数组的类型可以解决这两个问题。