符合Swift协议的泛型类型

cfi*_*her 16 generics types protocols swift

是否有可能要求泛型类型的特定实例符合Swift中的协议?

例如,假设我有一个名为的泛型类型Thing<T>.我想要Thing<Int>符合某个协议,但不是Thing<T>.

Enc*_*PTL -3

您可以执行类似使用where关键字并在后面传递条件之类的操作。在Where子句部分看到这个 https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/Generics.html#//apple_ref/doc/uid/TP40014097-CH26-XID_275

class Thing<T : SomeProtocol where reflect(T).summary != "Int"> {
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 类型约束中的“where”子句仅接受“:”和“==”条件,并在编译时进行评估。(`reflect(T).summary != "Int"` 是一个运行时表达式) (2认同)