0
有沒有辦法從subscript
返回當前類型,以避免重寫每個子類的下標,這就是我正在尋找。下標返回自我類型和不需要重寫它在每個子類
我們不能使用Self
作爲下標的返回類型,因爲它不被允許,但也許有一些解決方案?
例子:
class A {
var array = [Int]()
init(array: [Int]) {
self.array = array
}
subscript(condition: (Int) -> Bool) -> A {
get {
return A(array: array.filter(condition))
}
}
}
class B: A {
func aImB() -> Bool {
return true
}
}
let array = [1, 2, 3, 4, 5]
let objB_1 = B(array: array)
let objB_2 = objB_1[{ $0 > 3}]
print(objB_2.dynamicType) // -> will print "A" but I would like to see "B"
objB_2.aImB() // can't be called because objB_2 is of the type A
你需要添加'VAR數組:[INT] {}得到'到協議要編譯的要求。 –
我沒有這個在Playground(Swift 3)中工作。爲什麼你需要協議來知道這個屬性? – sketchyTech
因爲您在協議擴展中使用'array'屬性。 (FWIW,我的Swift 3遊樂場也對此抱怨) –