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 typeswhich 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)


Discussion

No Comment Found

Related InterviewSolutions