ios – Swift的等同协议一致性检查

ios – Swift的等同协议一致性检查,第1张

概述我试图用以下函数扩展 Swift的Array类: func containsObjectIdenticalTo(obj: T) -> Bool { // objectPassingTest returns the first object passing the test return objectPassingTest { x in x == obj }} 显然,这不会编译,因 我试图用以下函数扩展 Swift的Array类:

func containsObjectIDenticalTo(obj: T) -> Bool {    // objectPassingTest returns the first object passing the test    return objectPassingTest { x in x == obj }}

显然,这不会编译,因为编译器还不知道是否为类型T实现了==我然后将代码更改为此

func containsObjectIDenticalTo(obj: T) -> Bool {    return objectPassingTest {        x in        assert(x is Equatable && obj is Equatable)        return (x as Equatable) == (obj as Equatable)    } != nil}

哪个也不起作用,因为无法检查对Equatable的一致性(因为Equatable没有用@obj定义)!

有什么想法吗?如果有一种方法可以直接断言如果T符合Equatable,那会很好,但我还没有读到任何地方.在这些东西中,Swift似乎没有Obj-C那么动态.

更新:
尝试了这个建议并且它不起作用(不知道究竟是什么< T:Equatable>用于,它确实编译).

func containsObjectIDenticalTo<T: Equatable>(obj: T) -> Bool {    var x = self[0]    var y = self[0]    return x == y // Error here}
解决方法 指定T必须在Method的签名中相等:

func containsObjectIDenticalTo<T: Equatable>(obj: T) -> Bool {/*...*/}
总结

以上是内存溢出为你收集整理的ios – Swift的等同协议一致性检查全部内容,希望文章能够帮你解决ios – Swift的等同协议一致性检查所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1076078.html

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

发表评论

登录后才能评论

评论列表(0条)

保存