我找不到在泛型类定义中使用值而不是类或协议的方法。例如,我们经常会找到许多矩阵类,例如SCNMatrix3
,SCNMatrix4
,而能够定义更通用的Matrix<a, b>
更好,然后执行以下操作:
struct Mat<a is Int, b is Int> {
static func * (left: Mat<i, j>, right: Mat<k, l>) -> Mat<i, l> where j == k {
return ...
}
}
let m = Matrix<4, 5>(...)
let n = Matrix<5, 3>(...)
let p = Matrix<2, 2>(...)
let x = m * n
let y = m * p // compiler error since size mismatch
实现上述目标的更优雅方式是什么?
答案 0 :(得分:2)
Swift目前不支持将值作为泛型。
通用值参数列为&#34;可能&#34;在generics manifesto。
您可以使用代码生成器(如Apple用于Swift标准库的gyb)来生成不同大小的矩阵结构。