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的等同协议一致性检查所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)