Swift类型推测在可选调用中的小提示
2016-07-24 10:47
393 查看
我们知道Swift中协议里也有对应于Objc中的可选方法或计算属性,当然协议必须以@objc伪指令修饰否则不可以哦.
如下示例:
我们写一个类遵守Transaction协议的类:
下面我们来使用这个类:
以上代码最后一行返回的是一个可选值,因为DBTransaction类没有实现isComplete方法,所以它将返回nil
值得注意的一点是,在上面的代码中注释***那行代码没有使用Swift提供的类型推测功能而是显式指定Transaction而不是DBTransaction.
如果Swift编译器使用类型推测,则最后一行会报错,因为编译器知道DBTransaction并没有实现isComplete方法.
Swift的类型推测是如此的健壮以至于它偶尔需要你必须显式输入指定的类型(在此类中是指定遵守的协议)
如下示例:
@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 - 访问控制(private,internal,public)
- swift 学习笔记五
- Swift 2.3 【Swift 和 Javascript 如何相互调用】
- Swift 001.简单值
- swift_类和结构体
- Swift基础(十五)UIButton
- Swift基础(十四)UITextField
- Swift中循环判断中的一些小细节
- JokeClient-Swift 仿写学习
- JokeClient-Swift 仿写学习
- Swift基础(十三)UILabel
- Swift编程基础之排序(三)-----实战篇
- Swift编程基础之排序(二)
- swift教程【入门】 解开闭包迷惑
- 使用OC和Swift两种语言写一个发射烟花的小项目
- 使用OC和Swift两种语言写一个发射烟花的小项目
- 在Swift中使用JSONModel 实例代码
- Swift 导航栏设置
- Swift 修改UITextField.Placeholder颜色