微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift 学习笔记 [2] 类 结构体 枚举

结构体、枚举、类均有属性 方法 下表 构造器 嵌套类型 五中类型成员

enum

enum Season {
    case Spring = 1
    case Summer (description : String)
    case Fall
    case Winter 
}

枚举的原始值 : 具体枚举等号右边的 rawValue
枚举的关联值
枚举递归枚举值包含的关联值类型本身又是枚举自身,需要使用 indirect 方法

类 结构体

[修饰符] class/struct 类型 {
    构造器
    属性
    方法
    下标
}

修饰 private/internal/public、 final

  1. final表示不可以被重载
  2. 枚举和结构体是值类型,所以尽量设计地轻量一点。类实例是引用类型
  3. 封装少量数据、自动复制副本、确定不需要继承和被继承 这三种情况下,使用结构体.
  4. 枚举不能实例存储属性

类计算、存储属性

[修饰符] var 计算属性名 : 属性类型 {
 get {
}
set(形参名){
}
}
[修饰符] var 存储属性名 : 属性类型 {
willSet (newValue){
}
didSet (oldValue){
}
}
  1. 值类型不可改变存储属性: mutating 暂时没用上,后续发掘此用法
  2. 数组字典访问方法,同一个类型定义多个下表,通过下表形参列表和返回值区分不同的下表。这个特别灵活,可以多想想这里的拓展用法,应该会有大惊喜

类下标访问

subscript ((形成列表) -> 下表返回值 ) { get { } set(形参名){ } }

class 和 static 修饰符

  1. class 和 static 修饰成类型成员、类型方法
  2. 结构体和枚举只能使用static, 类可以使用 static 和 class
  3. 用static 不可被重写,用class修饰表示可以被子类重写。

错误处理

四种错误处理方法

  1. 传播给调用函数代码
    func procesFn () throw
    try processFn()
  2. do catch 捕获
    do {
    try expression
    } catch pattern 1 {
    } catch pattern 2 {
    }
  3. 错误转成可选值
    func processFn() throw -> Int {
    }
    let try? processFn()
  4. 使错误失效。
    let try! processFn()

defer

定义: defer定义的函数内,在此函数完成后,立即再次调用defer 定义的代码块。

无关的话

学了还是要用,第一版Swift文档出来的时候,还凑热闹学了一次,现在都忘得差不多了。这次至少要做个小项目出来练练手才不至于生疏。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐