我有一个定义简单词典的协议:
protocol P {
var dictionary: [String: Any] { get }
}
和符合它的两个结构:
struct S1: P {
var moreInfo: [String]
var dictionary: [String: Any]
}
struct S2: P {
var dictionary: [String: Any]
}
我希望从给定的对象初始化这些结构,因此初始化式如下所示:
init(from data: [[String: Any]]) {
dictionary = process(data)
// Specifically in S1
moreInfo = moreInfoProcess(data)
}
防止在S1和S2中重复使用相同代码来处理数据和设置dictionary
的最佳解决方案是什么?
谢谢你的帮助
1条答案
按热度按时间efzxgjgh1#
最简单的方法是在
P
的扩展中实现公共代码(并将其设置为静态以避免编译错误)