Swift ограничение на тип дженерика
Хочу чтобы тип дженерика был либо Int либо например String. Плюс к этому класс должен реализоваться протокол Container. Не понимаю как синтаксически это сделать. Пример достаточно искусственный, но тем не менее.
protocol Container {
associatedtype Item
var id: Item { get }
func getID()->Item
}
// Что здесь нужно написать ?
class Cont<T>: Container{
func getID() -> T {
return id
}
var id: T
init(_ value: T) {
id = value
}
}
Ответы (1 шт):
Автор решения: schmidt9
→ Ссылка
Можно сделать ограничение через расширения типов, реализующих один и тот же протокол
protocol Container {
associatedtype Item
var id: Item { get }
func getID()->Item
}
protocol Constraints {}
extension Int: Constraints {}
extension String: Constraints {}
class Cont<T: Constraints>: Container {
func getID() -> T {
return id
}
var id: T
init(_ value: T) {
id = value
}
}
let c1 = Cont(4)
let c2 = Cont("str")