Swift将值用作泛型

Swift将值用作泛型,swift,generics,Swift,Generics,我找不到在泛型类定义中使用值而不是类或协议的方法。例如,我们经常会发现一些矩阵类,如SCNMatrix3,SCNMatrix4,但最好能够定义更通用的矩阵,然后执行以下操作: 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 ... } }

我找不到在泛型类定义中使用值而不是类或协议的方法。例如,我们经常会发现一些矩阵类,如
SCNMatrix3
SCNMatrix4
,但最好能够定义更通用的
矩阵,然后执行以下操作:

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
struct Mat{
静态func*(左:Mat,右:Mat)->Mat,其中j==k{
返回。。。
}
}
设m=矩阵(…)
设n=矩阵(…)
设p=矩阵(…)
设x=m*n
设y=m*p//由于大小不匹配而导致编译器错误

实现上述目标的更优雅的方法是什么?

Swift目前不支持将值作为泛型

通用值参数在中列为“可能”

你可以使用一个代码生成器(比如苹果用于Swift标准库的代码生成器)来生成不同大小的矩阵结构。

比较。