【发布时间】:2019-10-19 18:34:57
【问题描述】:
我想为二维泛型数组分配类型别名。 (我不想创建新类型 struct MatrixT<T>{})。所以我接下来做:
typealias MatrixT<T> = [[T]]
但是当我开始为其编写扩展时,我发现编译器实际上并不理解 MatrixT 是 2D 数组。它将self 的类型识别为[Element]
extension MatrixT {
var columnsCount: Int {
let copy = self \\compilator recognizes this as let copy: [Element] = self
let row = self[0] \\compilator recognizes this as let row: Element
return 0
}
}
但在扩展之外,Swift 编译器理解 MatrixT 的元素是数组。
func testCreation() {
let matrix: MatrixT = [[0]]
let firstRow:[Int] = matrix[0] \\ correct
let columnsCount = firstRow.count
}
为什么我不能在 2D 数组 ([[T]]) 的扩展中引用类型 MatrixT?
【问题讨论】:
标签: arrays extension-methods type-alias swift5.1