Swift学习之路-关键字解读

文章基于Swift版本:3.0.1

在本篇文章中,主要讲解的是Swift中的一些关键字,让刚接触Swift的同学可以更快的理解Swift代码。

常见的关键字

  • let/var:修饰常量或者变量
1
2
let name = "Tom"
var age = 18
  • class/struct/enum:修饰类、结构体、枚举
1
2
3
class Student {//struct和enum和class用法类似
var name = "Tom"
}
  • protocol:修饰协议

    1
    2
    3
    protocol SomeDelegate {
    }
  • extension:修饰扩展

不太常见的关键字

  • deinit
  • inout:表示函数的参数可以在内部改变
1
2
3
4
func changeData(name:inout String,age: inout Int) {//因为在Swift中,函数中声明参数默认为let,所以如果你不添加inout关键字,编译器会报错。
name = "shshs"
age = 11
}
  • final:表示该类不允许继承,常用于你不想被重写的类。
1
2
3
4
5
6
7
final class Student {
var name = "student"
}
class SubStudent: Student {//这会报错`inheritance form a final class 'Student'`
}
  • throw

  • try

  • T

  • mutating:表示其修饰的值类型可以在实例方法中修改值类型的属性(结构体和枚举是值类型,而它们默认是不能在实例方法中修改它们的属性)。

代码示例(该例子来源[Swift Tips]):

1
2
3
4
5
6
7
8
9
10
11
12
13
protocol Vehicle {
var numberOfWheels: Int {get}
var color: UIColor {get set}
mutating func changeColor()
}
struct MyCar: Vehicle {
let numberOfWheels = 4
var color = UIColor.blue
mutating func changeColor() {
color = .red
}
}

详情见文档

本例子来源官方文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
protocol Tofflable {
mutating func toggle()
}
enum OnOffSwitch: Tofflable {
case Off, On
mutating func toggle() {
switch self {
case .Off:
self = .On
case .On:
self = .Off
}
}
}
var lightSwitch = OnOffSwitch.Off
lightSwitch.toggle()

  • where
  • $
  • associatedtype
  • typealias
  • open,public,internal,filepart,private
  • fileprivate(set),private(set) 或 internal(set)