Error[8]: Undefined offset: 9, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我可以比较2个字典是否匹配: func ==(lhs: [String: AnyObject], rhs: [String: AnyObject] ) -> Bool { return NSDictionary(dictionary: lhs).isEqualToDictionary(rhs)} 是否有一种简洁的方法来提取2个字典之间的差异,就像在交叉点的对面? 我们可以定义一个运算符来 我可以比较2个字典是否匹配:

func ==(lhs: [String: AnyObject],rhs: [String: AnyObject] ) -> Bool {    return NSDictionary(dictionary: lhs).isEqualToDictionary(rhs)}

是否有一种简洁的方法来提取2个字典之间的差异,就像在交叉点的对面?

解决方法 我们可以定义一个运算符来检查2个字典是否包含相同的键,并且每个键包含相同的值.

值必须是Equatable

首先,我们需要使用泛型来要求字典的值符合Equatable,否则我们将无法比较这些值.

代码

这是代码

func ==<Value:Equatable>(left: [String: Value],right: [String: Value]) -> Bool {    guard left.keys.count == right.keys.count else { return  false }    let differenceFound = zip(left.keys.sort(),right.keys.sort()).contains { elm -> Bool in        let leftKey = elm.0        let rightKey = elm.1        return leftKey != rightKey || left[leftKey] != right[rightKey]    }    return !differenceFound}

第一行验证字典具有相同数量的条目,否则返回false.

下一个代码块对两个字典的键进行排序,并比较每对字符串,以查找键或值不同的一对.

如果没有找到这样的差异,那么词典具有相同的键和值,因此它们是等于的.

例子

["a":1,"b": 2] == ["a":1,"b": 2] // true

当然,由于词典中的值没有订单,因此仍然如此

["a":1,"b": 2] == ["b":2,"a": 1] // true

在下一个示例中,我们将2个字典与不同数量的值进行比较

["a":1,"b": 2,"c": 3] // false

!=运算符

由于我们定义了==运算符,Swift给我们提供了!=运算符(它只返回==的反面),所以我们也可以写

["a":1,"b": 2] != ["d":4] // true

更短的版本

也可以用这种较短的方式编写相同的运算符

func ==<Value:Equatable>(left: [String: Value],right: [String: Value]) -> Bool {    return        left.keys.count == right.keys.count &&        !zip(left.keys.sort(),right.keys.sort()).contains { 
extension Dictionary where Key: Comparable,Value: Equatable {    func minus(dict: [Key:Value]) -> [Key:Value] {        let entrIEsInSelfAndnotinDict = filter { dict[
["a":1].minus(["a":2]) // ["a": 1]["a":1].minus(["a":1]) // [:]["a":1].minus(["a":1,"b":2]) // [:]["a":1,"b": 2].minus(["a":1]) // ["b": 2]
.0] != self[[+++].0] } return entrIEsInSelfAndnotinDict.reduce([Key:Value]()) { (res,entry) -> [Key:Value] in var res = res res[entry.0] = entry.1 return res } }}
!= || left[[+++]] != right[] }}

更新

现在给出2个词典a和b,你想要执行a.minus(b)并得到一个新的词典,其中包含a中可用的所有(键,值)对,而b中没有.

这是代码

[+++]

例子

[+++] 总结

以上是内存溢出为你收集整理的swift – 如何提取词典之间的差异?全部内容,希望文章能够帮你解决swift – 如何提取词典之间的差异?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 10, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我可以比较2个字典是否匹配: func ==(lhs: [String: AnyObject], rhs: [String: AnyObject] ) -> Bool { return NSDictionary(dictionary: lhs).isEqualToDictionary(rhs)} 是否有一种简洁的方法来提取2个字典之间的差异,就像在交叉点的对面? 我们可以定义一个运算符来 我可以比较2个字典是否匹配:

func ==(lhs: [String: AnyObject],rhs: [String: AnyObject] ) -> Bool {    return NSDictionary(dictionary: lhs).isEqualToDictionary(rhs)}

是否有一种简洁的方法来提取2个字典之间的差异,就像在交叉点的对面?

解决方法 我们可以定义一个运算符来检查2个字典是否包含相同的键,并且每个键包含相同的值.

值必须是Equatable

首先,我们需要使用泛型来要求字典的值符合Equatable,否则我们将无法比较这些值.

代码

这是代码

func ==<Value:Equatable>(left: [String: Value],right: [String: Value]) -> Bool {    guard left.keys.count == right.keys.count else { return  false }    let differenceFound = zip(left.keys.sort(),right.keys.sort()).contains { elm -> Bool in        let leftKey = elm.0        let rightKey = elm.1        return leftKey != rightKey || left[leftKey] != right[rightKey]    }    return !differenceFound}

第一行验证字典具有相同数量的条目,否则返回false.

下一个代码块对两个字典的键进行排序,并比较每对字符串,以查找键或值不同的一对.

如果没有找到这样的差异,那么词典具有相同的键和值,因此它们是等于的.

例子

["a":1,"b": 2] == ["a":1,"b": 2] // true

当然,由于词典中的值没有订单,因此仍然如此

["a":1,"b": 2] == ["b":2,"a": 1] // true

在下一个示例中,我们将2个字典与不同数量的值进行比较

["a":1,"b": 2,"c": 3] // false

!=运算符

由于我们定义了==运算符,Swift给我们提供了!=运算符(它只返回==的反面),所以我们也可以写

["a":1,"b": 2] != ["d":4] // true

更短的版本

也可以用这种较短的方式编写相同的运算符

func ==<Value:Equatable>(left: [String: Value],right: [String: Value]) -> Bool {    return        left.keys.count == right.keys.count &&        !zip(left.keys.sort(),right.keys.sort()).contains { 
extension Dictionary where Key: Comparable,Value: Equatable {    func minus(dict: [Key:Value]) -> [Key:Value] {        let entrIEsInSelfAndnotinDict = filter { dict[
["a":1].minus(["a":2]) // ["a": 1]["a":1].minus(["a":1]) // [:]["a":1].minus(["a":1,"b":2]) // [:]["a":1,"b": 2].minus(["a":1]) // ["b": 2]
.0] != self[.0] } return entrIEsInSelfAndnotinDict.reduce([Key:Value]()) { (res,entry) -> [Key:Value] in var res = res res[entry.0] = entry.1 return res } }}
!= || left[[+++]] != right[] }}

更新

现在给出2个词典a和b,你想要执行a.minus(b)并得到一个新的词典,其中包含a中可用的所有(键,值)对,而b中没有.

这是代码

[+++]

例子

[+++] 总结

以上是内存溢出为你收集整理的swift – 如何提取词典之间的差异?全部内容,希望文章能够帮你解决swift – 如何提取词典之间的差异?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 11, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我可以比较2个字典是否匹配: func ==(lhs: [String: AnyObject], rhs: [String: AnyObject] ) -> Bool { return NSDictionary(dictionary: lhs).isEqualToDictionary(rhs)} 是否有一种简洁的方法来提取2个字典之间的差异,就像在交叉点的对面? 我们可以定义一个运算符来 我可以比较2个字典是否匹配:

func ==(lhs: [String: AnyObject],rhs: [String: AnyObject] ) -> Bool {    return NSDictionary(dictionary: lhs).isEqualToDictionary(rhs)}

是否有一种简洁的方法来提取2个字典之间的差异,就像在交叉点的对面?

解决方法 我们可以定义一个运算符来检查2个字典是否包含相同的键,并且每个键包含相同的值.

值必须是Equatable

首先,我们需要使用泛型来要求字典的值符合Equatable,否则我们将无法比较这些值.

代码

这是代码

func ==<Value:Equatable>(left: [String: Value],right: [String: Value]) -> Bool {    guard left.keys.count == right.keys.count else { return  false }    let differenceFound = zip(left.keys.sort(),right.keys.sort()).contains { elm -> Bool in        let leftKey = elm.0        let rightKey = elm.1        return leftKey != rightKey || left[leftKey] != right[rightKey]    }    return !differenceFound}

第一行验证字典具有相同数量的条目,否则返回false.

下一个代码块对两个字典的键进行排序,并比较每对字符串,以查找键或值不同的一对.

如果没有找到这样的差异,那么词典具有相同的键和值,因此它们是等于的.

例子

["a":1,"b": 2] == ["a":1,"b": 2] // true

当然,由于词典中的值没有订单,因此仍然如此

["a":1,"b": 2] == ["b":2,"a": 1] // true

在下一个示例中,我们将2个字典与不同数量的值进行比较

["a":1,"b": 2,"c": 3] // false

!=运算符

由于我们定义了==运算符,Swift给我们提供了!=运算符(它只返回==的反面),所以我们也可以写

["a":1,"b": 2] != ["d":4] // true

更短的版本

也可以用这种较短的方式编写相同的运算符

func ==<Value:Equatable>(left: [String: Value],right: [String: Value]) -> Bool {    return        left.keys.count == right.keys.count &&        !zip(left.keys.sort(),right.keys.sort()).contains { 
extension Dictionary where Key: Comparable,Value: Equatable {    func minus(dict: [Key:Value]) -> [Key:Value] {        let entrIEsInSelfAndnotinDict = filter { dict[
["a":1].minus(["a":2]) // ["a": 1]["a":1].minus(["a":1]) // [:]["a":1].minus(["a":1,"b":2]) // [:]["a":1,"b": 2].minus(["a":1]) // ["b": 2]
.0] != self[.0] } return entrIEsInSelfAndnotinDict.reduce([Key:Value]()) { (res,entry) -> [Key:Value] in var res = res res[entry.0] = entry.1 return res } }}
!= || left[] != right[] }}

更新

现在给出2个词典a和b,你想要执行a.minus(b)并得到一个新的词典,其中包含a中可用的所有(键,值)对,而b中没有.

这是代码

[+++]

例子

[+++] 总结

以上是内存溢出为你收集整理的swift – 如何提取词典之间的差异?全部内容,希望文章能够帮你解决swift – 如何提取词典之间的差异?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 12, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我可以比较2个字典是否匹配: func ==(lhs: [String: AnyObject], rhs: [String: AnyObject] ) -> Bool { return NSDictionary(dictionary: lhs).isEqualToDictionary(rhs)} 是否有一种简洁的方法来提取2个字典之间的差异,就像在交叉点的对面? 我们可以定义一个运算符来 我可以比较2个字典是否匹配:

func ==(lhs: [String: AnyObject],rhs: [String: AnyObject] ) -> Bool {    return NSDictionary(dictionary: lhs).isEqualToDictionary(rhs)}

是否有一种简洁的方法来提取2个字典之间的差异,就像在交叉点的对面?

解决方法 我们可以定义一个运算符来检查2个字典是否包含相同的键,并且每个键包含相同的值.

值必须是Equatable

首先,我们需要使用泛型来要求字典的值符合Equatable,否则我们将无法比较这些值.

代码

这是代码

func ==<Value:Equatable>(left: [String: Value],right: [String: Value]) -> Bool {    guard left.keys.count == right.keys.count else { return  false }    let differenceFound = zip(left.keys.sort(),right.keys.sort()).contains { elm -> Bool in        let leftKey = elm.0        let rightKey = elm.1        return leftKey != rightKey || left[leftKey] != right[rightKey]    }    return !differenceFound}

第一行验证字典具有相同数量的条目,否则返回false.

下一个代码块对两个字典的键进行排序,并比较每对字符串,以查找键或值不同的一对.

如果没有找到这样的差异,那么词典具有相同的键和值,因此它们是等于的.

例子

["a":1,"b": 2] == ["a":1,"b": 2] // true

当然,由于词典中的值没有订单,因此仍然如此

["a":1,"b": 2] == ["b":2,"a": 1] // true

在下一个示例中,我们将2个字典与不同数量的值进行比较

["a":1,"b": 2,"c": 3] // false

!=运算符

由于我们定义了==运算符,Swift给我们提供了!=运算符(它只返回==的反面),所以我们也可以写

["a":1,"b": 2] != ["d":4] // true

更短的版本

也可以用这种较短的方式编写相同的运算符

func ==<Value:Equatable>(left: [String: Value],right: [String: Value]) -> Bool {    return        left.keys.count == right.keys.count &&        !zip(left.keys.sort(),right.keys.sort()).contains { 
extension Dictionary where Key: Comparable,Value: Equatable {    func minus(dict: [Key:Value]) -> [Key:Value] {        let entrIEsInSelfAndnotinDict = filter { dict[
["a":1].minus(["a":2]) // ["a": 1]["a":1].minus(["a":1]) // [:]["a":1].minus(["a":1,"b":2]) // [:]["a":1,"b": 2].minus(["a":1]) // ["b": 2]
.0] != self[.0] } return entrIEsInSelfAndnotinDict.reduce([Key:Value]()) { (res,entry) -> [Key:Value] in var res = res res[entry.0] = entry.1 return res } }}
!= || left[] != right[] }}

更新

现在给出2个词典a和b,你想要执行a.minus(b)并得到一个新的词典,其中包含a中可用的所有(键,值)对,而b中没有.

这是代码

例子

[+++] 总结

以上是内存溢出为你收集整理的swift – 如何提取词典之间的差异?全部内容,希望文章能够帮你解决swift – 如何提取词典之间的差异?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
swift – 如何提取词典之间的差异?_app_内存溢出

swift – 如何提取词典之间的差异?

swift – 如何提取词典之间的差异?,第1张

概述我可以比较2个字典是否匹配: func ==(lhs: [String: AnyObject], rhs: [String: AnyObject] ) -> Bool { return NSDictionary(dictionary: lhs).isEqualToDictionary(rhs)} 是否有一种简洁的方法来提取2个字典之间的差异,就像在交叉点的对面? 我们可以定义一个运算符来 我可以比较2个字典是否匹配:

func ==(lhs: [String: AnyObject],rhs: [String: AnyObject] ) -> Bool {    return NSDictionary(dictionary: lhs).isEqualToDictionary(rhs)}

是否有一种简洁的方法来提取2个字典之间的差异,就像在交叉点的对面?

解决方法 我们可以定义一个运算符来检查2个字典是否包含相同的键,并且每个键包含相同的值.

值必须是Equatable

首先,我们需要使用泛型来要求字典的值符合Equatable,否则我们将无法比较这些值.

代码

这是代码

func ==<Value:Equatable>(left: [String: Value],right: [String: Value]) -> Bool {    guard left.keys.count == right.keys.count else { return  false }    let differenceFound = zip(left.keys.sort(),right.keys.sort()).contains { elm -> Bool in        let leftKey = elm.0        let rightKey = elm.1        return leftKey != rightKey || left[leftKey] != right[rightKey]    }    return !differenceFound}

第一行验证字典具有相同数量的条目,否则返回false.

下一个代码块对两个字典的键进行排序,并比较每对字符串,以查找键或值不同的一对.

如果没有找到这样的差异,那么词典具有相同的键和值,因此它们是等于的.

例子

["a":1,"b": 2] == ["a":1,"b": 2] // true

当然,由于词典中的值没有订单,因此仍然如此

["a":1,"b": 2] == ["b":2,"a": 1] // true

在下一个示例中,我们将2个字典与不同数量的值进行比较

["a":1,"b": 2,"c": 3] // false

!=运算符

由于我们定义了==运算符,Swift给我们提供了!=运算符(它只返回==的反面),所以我们也可以写

["a":1,"b": 2] != ["d":4] // true

更短的版本

也可以用这种较短的方式编写相同的运算符

func ==<Value:Equatable>(left: [String: Value],right: [String: Value]) -> Bool {    return        left.keys.count == right.keys.count &&        !zip(left.keys.sort(),right.keys.sort()).contains { 
extension Dictionary where Key: Comparable,Value: Equatable {    func minus(dict: [Key:Value]) -> [Key:Value] {        let entrIEsInSelfAndnotinDict = filter { dict[
["a":1].minus(["a":2]) // ["a": 1]["a":1].minus(["a":1]) // [:]["a":1].minus(["a":1,"b":2]) // [:]["a":1,"b": 2].minus(["a":1]) // ["b": 2]
.0] != self[.0] } return entrIEsInSelfAndnotinDict.reduce([Key:Value]()) { (res,entry) -> [Key:Value] in var res = res res[entry.0] = entry.1 return res } }}
!= || left[] != right[] }}

更新

现在给出2个词典a和b,你想要执行a.minus(b)并得到一个新的词典,其中包含a中可用的所有(键,值)对,而b中没有.

这是代码

例子

总结

以上是内存溢出为你收集整理的swift – 如何提取词典之间的差异?全部内容,希望文章能够帮你解决swift – 如何提取词典之间的差异?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1008815.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存