我的問題可能很簡單,但它讓我困惑了一下: 想象一下,我有一組不同的對象,它們都有一個共同的父類「MyClass
」。 Swift的泛型和子類
var values = [MyClass]()
但是它們都有其特定的子類,例如像「MyClassSubclass
」。
values.append(MyClassSubclass())
我現在要創建一個通用的方法返回我這個數組是MyClassSubclass
類型內的第一個對象。我想阻止對象的轉換,但是有一個泛型方法,它將子類對象作爲T參數,並返回此數組中第一個出現的子類T.
我認爲是這樣的(但肯定不工作):
func getFirst<T: MyClass>(_ ofType : T.Type) -> T?
我想我只是卡住了,我不知道該怎麼尋找,因此,如果有人可以幫助我我將不勝感激。
編輯例如基於上述值:
class MyClass {}
class MyClassSubclass : MyClass {}
class MyClassSubclass2 : MyClass{}
var values = [MyClass]()
values.append(MyClassSubclass())
values.append(MyClassSubclass2())
//Return the first class element appearing here as a subclass type
func getFirst<T>(_ ofType : T.Type) -> T?{}
感謝
我喜歡你的方法。你認爲哪一個會是第一次返回最快的? – binloan
@binloan:我的猜測是for循環是最快的,需要測量和比較。但我會建議先檢查這部分的性能是否對您的應用至關重要。如果數組不大,那麼我懷疑會有很大的差異。 –
好吧,我會測試一下。我的數組目前並不大,但這可能會在將來發生,我希望有一個適當的實現。 – binloan