Как определить, имеют ли два экземпляра общей структуры одного типа?
Например, с учетом следующей структуры:
struct FooBar<T> {
let variable: T
init(arg: T) {
variable = arg
}
}
И следующий фрагмент:
let foo = FooBar(1)
let bar = FooBar(1.0)
let baz = FooBar("1")
Как определить, являются ли теги foo
, bar
или baz
одинаковыми или разными?
func areExactType(x: FooBar) -> Bool {
return self.dynamicType === x.dynamicType
}
Это дает
Тип 'Foo' не соответствует протоколу 'AnyObject'
func areExactType(x: FooBar) -> Bool {
return self.dynamicType === x.dynamicType
}
Это дает
Невозможно вызвать '==' с помощью списка аргументов типа '(Foo.Type, Foo.Type)'
func areExactType(x: FooBar) -> Bool {
return self is x.dynamicType
}
Это дает три ошибки:
Последовательные операторы строки должны быть разделены символом ';'
(он хочет поставить точку с запятой между периодом и "dynamicType" )
Ожидаемый идентификатор в точечном типе
и
Ожидаемое выражение