我们知道Swift中协议里也有对应于Objc中的可选方法或计算属性,当然协议必须以@objc伪指令修饰否则不可以哦.
如下示例:
@objc protocol Transaction{ fun commit()->Bool optional fun isComplete()->Bool}
我们写一个类遵守Transaction协议的类:
class DBTransaction:Transaction{ fun commit()->{ //do something return true }}
下面我们来使用这个类:
let db:Transaction = DBTransaction() //***db.commit()db.isComplete?() //注意这里使用可选调用
以上代码最后一行返回的是一个可选值,因为DBTransaction类没有实现isComplete方法,所以它将返回nil
值得注意的一点是,在上面的代码中注释***那行代码没有使用Swift提供的类型推测功能而是显式指定Transaction而不是DBTransaction.
如果Swift编译器使用类型推测,则最后一行会报错,因为编译器知道DBTransaction并没有实现isComplete方法.
Swift的类型推测是如此的健壮以至于它偶尔需要你必须显式输入指定的类型(在此类中是指定遵守的协议)
总结以上是内存溢出为你收集整理的Swift类型推测在可选调用中的小提示全部内容,希望文章能够帮你解决Swift类型推测在可选调用中的小提示所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)