首页 > 解决方案 > (空)协议一致性测试

问题描述

这里有一些让我有点困惑的东西。

我已经为测试目的定义了这个空协议:

protocol Doable {
}

协议为空,我希望任何可能的类型都符合它。

但是当我使用这段代码来执行一个简单的协议一致性测试时,使用了两种方式。

if let _ = MyType.self as? Doable {
    print("Doable match OK!!")
} else {
    print("That doesn't match!!")
}

if MyType.self is Doable.Type {
    print("Doable match OK!!")
} else {
    print("That doesn't match!!")
}

结果我总是得到:它不匹配

这是应该发生的事情吗?

还是我的测试或期望是错误的?

标签: iosswiftgenericsprotocols

解决方案


即使一个类型满足协议的要求,它的一致性也必须明确说明。


推荐阅读