Swift使用值作为泛型

时间:2017-06-20 21:25:49

标签: swift generics

我找不到在泛型类定义中使用值而不是类或协议的方法。例如,我们经常会找到许多矩阵类,例如SCNMatrix3SCNMatrix4,而能够定义更通用的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

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

1 个答案:

答案 0 :(得分:2)

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

通用值参数列为&#34;可能&#34;在generics manifesto

您可以使用代码生成器(如Apple用于Swift标准库的gyb)来生成不同大小的矩阵结构。