【发布时间】:2019-03-17 12:29:57
【问题描述】:
当我想检查一个类型是否符合简单协议时,我可以使用:
if let type = ValueType.self as? Codable.Type {}
当协议有关联类型时,例如RawRepresentable有RawValue,当我这样做时:
if let type = ValueType.self as? RawRepresentable.Type {}
编译器会显示如下错误:
Protocol 'RawRepresentable' 只能用作通用约束,因为它具有 Self 或关联的类型要求
那么如何检查关联类型与协议的一致性呢?
【问题讨论】:
-
常识...在您的
ValueType中,RawValue是什么? :) -
这种检查闻起来很objective-c-ish。在像 Swift 这样的强类型语言中,应该在编译时检查类型。
-
@DominikBucher 我想它可以是任何类型
标签: swift swift-protocols associated-types