以下代码应该清楚地解释我想要做的事情。当然,这会产生编译时错误。
执行以下代码所需的正确方法是什么?
protocol FilterableDataSource {
var dataClass: AnyClass { get }
var data: [dataClass.dynamicType] { get }
}
答案 0 :(得分:1)
您不能在协议中使用泛型,但如果您尝试,Swift会为您提供一个提示相关类型。代码很少清楚地解释意图,但我猜测你想要实现的目标是......
protocol FilterableDataSource {
typealias T
var data: [T] { get }
}
class MyData { }
class MyClass: FilterableDataSource {
typealias T = MyData
var data: [MyData] { return [MyData]() }
}
print(MyClass().data.count)
答案 1 :(得分:0)
我会使用AnyObject
代替AnyClass
。然后你可以把它投入你想要的任何东西。
答案 2 :(得分:-1)
我相信你想要做的是在你的协议中定义一个typealias要求。
self::_getCategoryInfor($tg, $params)[0];
因此,不需要您的可过滤数据源来定义包含该类的变量,而是要求它们为data []变量的元素定义一个类型。理想情况下,您的数据类具有除AnyObject之外的共同祖先,您可以将其用作类型限制。