这是一个简单的例子,演示了我所看到的内容(在swift 1.2中)
protocol Foobar {}class Foo: Foobar {}class bar { let foo1: Foobar? let foo2: Foobar? init() { foo1 = Foo() foo2 = Foo() if foo1! as? AnyObject === foo2! as? AnyObject { // this is fine } if foo1! === foo2! { // Birnary operator '===' cannot be applIEd to two Foobar operands } }}身份运算符===只能应用于引用,即类的实例.
如果符合Foobar协议的所有类型都是类
你可以把它声明为“类协议”
protocol Foobar : class { }
然后
if foo1! === foo2! { ... }
编译并按预期工作,因为编译器“知道”它两个 *** 作数都是对类实例的引用.
总结以上是内存溢出为你收集整理的我们可以测试符合相同协议的对象在swift中是否完全相同而不进行转换?全部内容,希望文章能够帮你解决我们可以测试符合相同协议的对象在swift中是否完全相同而不进行转换?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)