Swift 通用in协议的使用
我正在尝试为泛型组件创建数据源协议,但我无法确定如何正确使用associatedtype和typealias。每当我试图在组件中定义数据源时,它都会给出编译错误: 协议“SampleDataSource”只能用作一般约束,因为它具有自身或关联的类型要求“ 以下是我试图实现的一个片段:Swift 通用in协议的使用,swift,generics,Swift,Generics,我正在尝试为泛型组件创建数据源协议,但我无法确定如何正确使用associatedtype和typealias。每当我试图在组件中定义数据源时,它都会给出编译错误: 协议“SampleDataSource”只能用作一般约束,因为它具有自身或关联的类型要求“ 以下是我试图实现的一个片段: public protocol SampleDataSource { associatedtype ObjectType func objectAtIndex(index: Int) -> O
public protocol SampleDataSource {
associatedtype ObjectType
func objectAtIndex(index: Int) -> ObjectType
}
public class SampleComponent<T> {
typealias ObjectType = T
var dataSource: SampleDataSource? = nil // <-- This line has error
}
公共协议样本数据源{
associatedtype对象类型
func objectAtIndex(索引:Int)->ObjectType
}
公共类采样组件{
typealias ObjectType=T
var-dataSource:SampleDataSource?=nil//错误说明了您需要知道的一切。具有关联类型的协议只能用作约束(例如,在where
子句中),它们不能用作变量。换句话说,您可以执行:类SampleComponent{…}
并定义var-dataSource:T
(不需要typealias)…这也意味着您必须从定义SampleDataSource
的具体实现开始。我想我现在明白了,谢谢你们两位的帮助。