【发布时间】:2015-09-09 16:00:34
【问题描述】:
这与this question 有关。使用 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 我有大约 5 个不同的类,它们具有相同的变量“children”,有些具有相同的变量“parent”。这些都有一些共同点,但有时我更喜欢检查它是否是父类而不是类型检查,这意味着它保证有一个我想要访问的“子”变量。