获取与Swift INT相乘的错误

获取与Swift INT相乘的错误,swift,multiplication,Swift,Multiplication,新的迅捷爱好者在这里!我遵循Rey Wenderlich的方法,将两个Int值相乘时出错。我知道斯威夫特是严格打字的,所以原因是什么?我不能用Swift做这个吗?注意我遇到问题的错误注释。非常感谢您在正确方向上的任何帮助 class Array2D<T> { let columns: Int let rows: Int let array: Array<T> init(columns: Int, rows: Int) { self.columns

新的迅捷爱好者在这里!我遵循Rey Wenderlich的方法,将两个
Int
值相乘时出错。我知道斯威夫特是严格打字的,所以原因是什么?我不能用Swift做这个吗?注意我遇到问题的
错误
注释。非常感谢您在正确方向上的任何帮助

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
    }
  }
}
类数组2d{
let列:Int
让行:Int
让数组:数组
init(列:Int,行:Int){
self.columns=列
self.rows=行
array=array(count:rows*columns,repeatedValue:nil)//错误:找不到接受提供的参数的“*”的重载
}
下标(列:Int,行:Int)->T{
得到{
返回数组[行*列+列]
}
设置{
数组[row*columns+column]=newValue//错误:找不到接受提供的参数的“*”的重载
}
}
}

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


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

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


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

行*计数
??可能是
行*列
…我做了更改。谢谢不幸的是,我得到了相同的错误。
行*计数
??可能是
行*列
…我做了更改。谢谢不幸的是,我也犯了同样的错误,你就是罗珊。
T?
是否意味着它可以是任何类型的
T?
指类型为
T
的“可选”。它基本上表示它可以保存类型为
T
的值,也可以不保存值(
nil
)。看见当然,
T
本身可以是任何类型,但是一旦你修复了
T
T?
也被修复了。所以你在第一行的“错误”中说,
count
可以是
nil
。。或者,如果它被设置为
Int
,那么它将被固定为Int?
init(count:Int,repeatedValue:T)
是为
数组定义的方法签名。在您的例子中,
T
T?
。因此,
count
Int
,而不是
Int?
,这意味着您必须给出一个整数,而不是
nil
。然而,
repeatedValue
T?
,所以你可以给出一个
T
nil
类型的值。这一开始有点令人困惑,特别是如果你来自Objective-C。
nil
在Swift中得到非常特殊的处理。你就是罗山。
T?
是否意味着它可以是任何类型的
T?
指类型为
T
的“可选”。它基本上表示它可以保存类型为
T
的值,也可以不保存值(
nil
)。看见当然,
T
本身可以是任何类型,但是一旦你修复了
T
T?
也被修复了。所以你在第一行的“错误”中说,
count
可以是
nil
。。或者,如果它被设置为
Int
,那么它将被固定为Int?
init(count:Int,repeatedValue:T)
是为
数组定义的方法签名。在您的例子中,
T
T?
。因此,
count
Int
,而不是
Int?
,这意味着您必须给出一个整数,而不是
nil
。但是,
repeatedValue
T?
,因此您可以给出类型为
T
nil
的值。这在一开始有点令人困惑,特别是如果您来自Objective-C.
nil
在Swift中得到非常特殊的处理。