簡體   English   中英

具有類型約束的Swift通用數組

[英]Swift generic array with type constraint

我正在嘗試編寫一個返回通用數組的swift方法。 我遺漏了一些細節,但保留了重要的一點,這不清楚......

protocol AProtocol {
    func doSomething()
}

func decode<T: AProtocol>(jsonArray: Array<AnyObject>?) -> [T: AProtocol] {
    //...
    var resultArray = [T: AProtocol]()
    resultArray.append
    //...
}

當我指定數組包含類型T:AProtocol時,則不再顯示append方法

[T:AProtocol]沒有名為append的成員

在這行代碼中:

var resultArray = [T: AProtocol]()

您正在創建一個具有T類型鍵和AProtocol類型值的字典。

要創建AProtocol數組,只需使用:

var resultArray = [AProtocol]()

否則,如果你想要一個T數組:

var resultArray = [T]()

注意,實現AProtocol協議的T的約束是在函數聲明中設置的,因此在函數體中使用T時不必再重復它。

[T: AProtocol]()不是數組,而是字典。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM