这是来自Github上的公共Eureka项目。我试图理解源代码(和Swift泛型)。我已经停留在这个片段的最后一行了。最后一行在做什么?
open class Row<Cell: CellType>: RowOf<Cell.Value>, TypedRowType where Cell: BaseCell {
/// Responsible for creating the cell for this row.
public var cellProvider = CellProvider<Cell>()
/// The type of the cell associated to this row.
public let cellType: Cell.Type! = Cell.self //what is this line doing?
答案 0 :(得分:5)
它将属性cellType
分配给此通用专用的Cell
类型。因此,如果这是Row<PersonCell>
,cellType
是PersonCell
。
这里的!
几乎肯定是不必要的,并且可以在Swift 3中使用它来产生一些麻烦。
答案 1 :(得分:2)
当您调用.self
作为类的静态属性时,会检索该类的类型。
因此,如果Row<CustomCell>
cellType
已分配CustomCell.Type
。