Из другого вопроса здесь, на SO о тестировании на соответствие протоколу, это решение...
public class Foo<TItem> {
final public var items:[TItem] = [] {
didSet{
// This is allowed
if TItem.self is SomeProtocol.Type {
}
else{
}
}
}
}
Однако из-за собственных требований это не разрешено...
public class Foo<TItem> {
final public var items:[TItem] = [] {
didSet{
// This is NOT allowed
if TItem.self is Equatable.Type {
...update based on eqality...
}
else{
...process en masse since we can't check for equality...
}
}
}
}
Итак, как я могу написать приведенное выше, чтобы я мог проверить соответствие и соответствующим образом обработать его?
Equatable
на самом деле не является типом, это больше похоже на формочку для печенья типа, которая штампует новый вариант самого себя для каждого значенияSelf
. На данный момент нет возможности сказатьAny Equatable
:( - person Alexander   schedule 04.10.2018