這與this question相關。使用typealias,我可以創建一個具有「children」var但具有特定類型的類,這正是我正在尋找的。但是當我這樣做時,我不能再測試以查看實例是否遵循該協議。我也試過'如果讓',那不行。有沒有辦法做到這一點?測試實例是否是Swift中的typealias協議?
protocol Parent {
typealias Child
var children: [Child] { get set }
}
protocol Child {
typealias Parent
var parent: Parent { get set }
}
class Foo: Parent {
var children = [Bar]()
init(){}
}
class Bar: Child {
var parent = Foo()
}
let testVar = Foo()
let cVar = Bar()
testVar.children.append(cVar)
cVar.parent = testVar
//I get the error here saying protocol is limited to generic constraints
if testVar is Parent {
}
其實我不認爲這會多大意義(該編譯器有其原因)或用於某些事情。你可以用你的意圖擴展你的問題嗎? – Kametrixom
@Kametrixom我有大約5個不同的類具有相同的變量「孩子」,有些具有相同的變量「父母」。這些都有一些共同點,但有時候不是類型檢查我喜歡鍵入的每一個類型檢查是否它是一個父類,這意味着它保證有一個「子」變量,我想訪問。 – MAH