Protocol泛型

在class中泛型聲明十分簡單,直接類名後面➕ <T : Any>就能夠了,那麼Protocol中的泛型應該如何使用呢?

任務

理想中protocol中的泛型使用應該是這樣的swift

protocol XProtocol<T : Any> {
    var param : [T]{get set}
    func testFun() -> T
}

但實際上Protocol是不支持這樣的泛型聲明的,那麼咱們如何實現以上代碼的功能呢?code

實現

protocol中使用泛型涉及到associatedtype關鍵字,這個關鍵字應該怎麼用,具體咱們看看代碼ci

protocol FxProtocol {
    associatedtype T
    
    var param : [T]{get set}
    func testFun() -> T
}

在class中,咱們定義一下T的具體類型便可get

class Test : FxProtocol{
    typealias T = String
    
    var param: [String] = []
    
    func testFun() -> String {
        return ""
    }
    
}
相關文章
相關標籤/搜索