我在'SquareMatrix< T:HasZeroOne>'中有以下代码数据“数据”存储在[[T]]双数组中的类。我制作了这个映射函数来模仿标准的Swift函数。
public func map<S: HasZeroOne>(transform: (T) -> S) -> SquareMatrix<S> {
return SquareMatrix(data: data.map{(row: [T]) in row.map({(col: T) in transform(col)})})!
}
起初我尝试了更简单的语法:
public func map<S: HasZeroOne>(transform: (T) -> S) -> SquareMatrix<S> {
return SquareMatrix(data: data.map{$0.map(transform)})!
}
但在这两种情况下都出现了以下错误:
无法转换类型'(T) - &gt;的值S'到预期的参数类型'(_) - &gt; _'
我完全迷失了。我做错了什么?
答案 0 :(得分:2)
一如既往,我在5分钟后得到答案。并不是说错误信息有帮助。以下作品:
public func map<S: HasZeroOne>(transform: (T) -> S) -> SquareMatrix<S> {
return SquareMatrix<S>(data: data.map{$0.map(transform)})!
}
请注意<S>
。
希望有人发现这是一个有用的提示!