【发布时间】:2015-07-29 07:48:38
【问题描述】:
我有一个接受可变参数的初始化程序,但我希望参数只是以下两种类型之一:
- 一个自定义类,比如
MyCustomNSOperation -
(MyCustomNSOperation, () -> Bool)的元组
如何在 Swift 2.0 中实现这一点?我目前的初始化程序是这样写的,但我认为它太宽松了:
init(items: Any ...) {
}
在课堂上的某个地方,我遍历所有项目,检查它们的类型,如果它不是我想要限制的两种类型之一,我会抛出一个fatalError。
for i in 0..<self.items.count {
guard self.items[i] is MyCustomNSOperation || self.items[i] is (MyCustomNSOperation, () -> Bool) else {
fatalError("Found unrecognised type \(self.items[i]) in the operation chain")
}
}
如果是,我执行另一个函数的两个重载版本之一。
我也查看了协议组合,但强制类型约束逻辑是 AND,而不是 OR(即,项目必须符合 两种 类型,而不仅仅是其中一种)。
【问题讨论】:
标签: ios iphone swift foundation