InterviewSolution
Saved Bookmarks
| 1. |
class A { var name:String init(name:String) { self.name = name } } class B:A { var id : String init(name:String, id : String){ self.id = id super.init(name: name) } convenience init (id:String) { super.init(name: "unknown") self.id = id } } |
|
Answer» Key is to use associated types, which is a powerful way of making protocols generic. protocol Store { associatedtype DataType var ids: [DataType] { get set} mutating func add(id: DataType) } EXTENSION Store { mutating func add(id: DataType) { ids.append(id) } } struct SystemOne: Store { var ids = [STRING]() } struct SystemTwo: Store { var ids = [INT]() } var sysOne = SystemOne() sysOne.add(id: "ONE") sysOne.add(id: "Two") var sysTwo = SystemTwo() sysTwo.add(id: 1) sysTwo.add(id: 2) print(sysOne.ids) print(sysTwo.ids) |
|