Как Swift Language Guide баллов из общих типов может быть сдерживающим фактором для классов или протоколов, как это:Как создать общий класс, который связан с структурами?
public class MyGenericClass<T:Equatable> {
func printEquality(a:T, b:T) {
if a == b {
print("equal")
} else {
print("not equal")
}
}
}
Могу ли я каким-то образом ограничить T
быть struct
?
Мой пример использования - это класс наблюдателя для типов значений, которые должны использоваться только структурами.
В качестве примечания стороны: Я знаю, что есть, например, только для классов, которые реализуются только классами. Это на самом деле не связано, но показывает, что иногда есть особый способ достижения цели.
protocol SomeClassOnlyProtocol: class, SomeInheritedProtocol {
// class-only protocol definition goes here
}
Наследование относится только к классам (ссылочные типы). SomeInheritedProtocol не имеет смысла в Swift. Связано с протоколами - это соответствие. Однако проверка выполнения, если экземпляр какого-либо типа соответствует протоколу AnyObject или нет, доступен с помощью оператора – user3441734
Близко связанный: http://stackoverflow.com/questions/33623104/how-to-restrict-a-protocol-to-value-types -одно: –
@ user3441734 фрагмент кода - это цитата из главы «Протоколы» в Руководстве по языку Swift. – Klaas