获取与Swift INT相乘的错误
新的迅捷爱好者在这里!我遵循Rey Wenderlich的方法,将两个获取与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
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中得到非常特殊的处理。