- 断言
向 assert(_:_:) 函数传入一个结果为 true 或者 false 的表达式以及一条会在结果为 false 的时候显式的信息。
如果条件判断为 true,代码运行会继续进行;如果条件判断为 false,代码运行结束,你的应用也就中止了。
let age = -3 assert(age >= 0, "A person's age cannot be less than zero") // this causes the assertion to trigger, because age is not >= 0 |
如果代码已经检查了条件,你可以使用 assertionFailure(_:file:line:) 函数来标明断言失败。
- 可选类型(Optional)
可选类型是在 1,标准的类型后面加?2,或者Optional<类型>
例 var myStr:String?=“123”
或 var myStr:Optional<String> = “Hello”
(1)强制解析 :
当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号( ! )来获取值。
例 if convertedNumber != nil {
print("convertedNumber has an integer value of \(convertedNumber!).")
}
// 输出 "convertedNumber has an integer value of 123."
(2)If-let 可选量绑定(Optional Binding)
来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。
例 if let actualNumber = Int(possibleNumber) {
print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")
} else {
print("\'\(possibleNumber)\' could not be converted to an integer")
3)隐式解析可选类型:
把想要用作可选的类型的后面的问号( String? )改成感叹号( String! )来声明一个隐式解析可选类型。隐式解析后不需要感叹号来获取值
例 et possibleString: String? = “AAA”
let forcedString: String = possibleString! // 需要惊叹号来获取值
let assumedString: String! = “AAA”
let implicitString: String = assumedString // 不需要感叹号
- 函数
函数定义 func 函数名(参数列表)->返回值类型{
函数体
}
其中:参数列表:
[参数标签1] 形式参数1:类型,[参数标签2] 形式参数2:类型,...
(参数标签一般不写)
例
func add(n1 : Int, n2 : Int)->Int{
return n1+n2
}
var n = add(n1:12, n2:13 )
- 函数标签
可以有可以没有,没有指定时,默认把形参名当作标签。
- 输入输出参数
两种参数传递方式
值类型
传递的是参数的一个副本,这样在调用参数的过程中不会影响原始数据。
引用类型
把参数本身引用(内存地址)传递过去,在调用的过程会影响原始数据。
在 Swift 众多数据类型中,只有 class 是引用类型,
其余的如 Int、Float、Bool、Character、Array、Set、enum、struct全都是值类型.
让值类型以引用方式传递
Swift 提供的 inout 关键字就可以实现。
func increment(_ value: inout Int, _ length: Int = 10) {
value += length
}
increment(&value)
print(value)
- 函数类型
函数的返回值用来做参数,这时只需要写函数类型不需要标签。
- 嵌套函数
函数参数的修饰符
形式参数前默认有修饰符let
如果要改变形式参数的值,应该在定义时改成inout类型参数。
switch语句
跟c语言不同部分
1,执行完某个case后退出switch,不会顺序执行其他case的值。
2,每个case必须至少一个可执行语句
3,所有case必须能涵盖所有变量的值,否则应有default语句
- for in 循环
循环体中参数不重要时可用_表示
var base =3 ,answer = 1, power = 10
for _ in 1...power{
answer *= base }
- Repeat while循环
相当于(do while)
- 转移控制语句
fallthrough 继续执行下一个case语句