在下面的代码中,当我尝试访问
genericVar.someFunc()
时,我会得到错误信息:作为一个泛型变量,当我初始化"Value of type 'MyProtocol?' has no member 'someFunc'"。
MyOtherStruct
对象时,我必须传递一个符合MyProtocol
协议的具体实现对象,那么为什么会出现这个错误呢?"最初的回答"public protocol MyProtocol {
associatedtype T
func someFunc() -> T
}
public struct myStruct: MyProtocol {
public typealias T = Int16
public func someFunc() -> Int16 {
let myVar: Int16 = 7
return myVar
}
}
public struct myOtherStruct<MyProtocol> {
var genericVar: MyProtocol?
public init(localVal: MyProtocol?) {
self.genericVar = localVal
if genericVar != nil {
var my = genericVar.someFunc()
}
}
}