获取一个错误乘以Swift Ints

时间:2014-07-04 00:39:57

标签: swift multiplying

这里有新的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
    }
  }
}

1 个答案:

答案 0 :(得分:4)

将数组更改为T?类型。 在第一种情况下,您尝试将类型为T?的数组分配给类型为T的数组。在第二步中,您尝试将newValue类型T?分配给类型T的数组元素。

更改数组的类型可以解决这两个问题。