这与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