这里是新的 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
}
}
}
最佳答案
将数组更改为 T?
类型。
在第一种情况下,您尝试将 T?
类型的数组分配给 T
类型的数组。在第二个例子中,您尝试将 T?
类型的 newValue
分配给 T
类型的数组元素。
更改数组的类型可以解决这两个问题。
关于swift - Swift Int 相乘时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24565189/