import UIKit
protocol Identifiable
{
}
protocol Storage
{
func test() -> Data<Identifiable>
}
class DiskStorage<T where T:Identifiable, T:NSCoding>:Storage
{
func test() -> Data<Identifiable>
{
return Data<T>() //error: T is not identical to Identifiable
}
}
class Data<T where T:Identifiable>
{
}我认为可以使用符合协议的泛型类型来调用引用相同协议的方法。怎么投?几乎什么都试过了,都没有用。也许我理解错了什么..。
对这家伙有什么帮助吗?非常感谢
发布于 2014-08-20 02:03:08
尝尝这个
protocol Identifiable
{}
class Data<T where T:Identifiable>
{}
protocol Storage
{
typealias Element : Identifiable
func test() -> Data<Element>
}
class DiskStorage<T where T:Identifiable, T:NSCoding>:Storage
{
func test() -> Data<T>
{
return Data<T>()
}
}
// from REPL
32> var s = DiskStorage<Foo>()
s: DiskStorage<Foo> = {}
33> s.test()
$R0: Data<Foo> = {}正如我在this answer中指出的,Data<T>与Data<Identifiable>没有任何关系。因此,您不能在需要Data<T>的地方使用Data<Identifiable>,从而导致编译错误。
https://stackoverflow.com/questions/25395132
复制相似问题