1.使用 class 和类名来创建类

1
2
3
class <#name#>: <#super class#> {
<#code#>
}

2.创建类的时候并不一定要有根类,可以忽略父类
3.子类重写父类的方法必须需要加 override 关键字
4.使用 func 来声明函数

1
2
3
func <#name#>(<#parameters#>) -> <#return type#> {
<#function body#>
}

5.使用 enum 来创建枚举,Swift 里的枚举可以包含方法..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
enum Rank: Int {
case Ace = 1
case Two, Three, Four, Five, Six
case Jack, Queen, King
func simpleDesc() -> String {
switch self {
case .Ace:
return "ace"
default:
return "queen"
}
}
}

rawValue 可以访问枚举成员的原始值
6.使用struct来创建一个结构体,结构体和类有许多相同的地方,如方法和构造器,区别是结构体是传值,类是传引用

1
2
3
4
5
6
struct Card {
var rank: Rank
func simpleDesc() -> String {
return "rank 's simpleDesc is \(rank.simpleDesc()) "
}
}

7.协议和扩展
使用protocol声明协议
Swift 的 protocol 不仅可以被 class 类型实现,也适用于 struct 和 enum。
mutating 关键字修饰方法是为了在该方法中修改 struct/enum 的变量,在 class 中不需要声明 mutating,在 struct 中需要,因为 class 中的方法通常可以修改类属性
当用 enum 实现一个协议时,如果需要添加存储属性时像 sturct 和 class 那样,会出现Enums may not contain stored properties 的错误,使用关联值来解决

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
enum Rank: Int, ExampleProtocol {
case Ace = 1
case Two, Three, Four, Five, Six
case Jack, Queen, King
func simpleDescription() -> String {
switch self {
case .Ace:
return "ace"
default:
return "queen"
}
}
var simpleDesc: String {
switch self {
case .Ace:
return "ace"
default:
return "other"
}
}
func adjust() {
print("a enum func protocol")
}
}

使用 extension 来给现有类型添加功能,如新的方法和属性

optionals
可选值
String?意味着可以使用一个值或者时 nil