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文档出来的时候,还凑热闹学了一次,现在都忘得差不多了。这次至少要做个小项目出来练练手才不至于生疏。

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...