我知道 JSON 密钥没有任何顺序并且可以随机生成,但是没有任何东西阻止我编写这个函数,并且从我的测试来看,这适用于我测试的每个用例。
func ==<T: Encodable> (lhs: T, rhs: T) -> Bool {
let encoder = JSONEncoder()
do {
let leftEncoded = try encoder.encode(lhs)
let rightEncoded = try encoder.encode(rhs)
return leftEncoded == rightEncoded
} catch {
return false
}
}
我要解决的问题是为一种类型编写一个函数,该类型具有一个协议的数组,具有大约 20 种不同的实现,我必须实现该==
函数而不是快速自动合成。而且我知道我可以切换到JSONSerialization.writeJSONObject
选项.sortedKeys
以保留键顺序。
这个实现而不是任何其他编写==
函数的方法的缺点是什么?