-
if else
的注意点:
-
if
后面的条件可以省略 小括号 - 条件后面的大括号不可以省略
-
if
后面的条件必须是 bool 类型
-
while
注意点
-
repeat-while
相当于OC中的do-while
循环 - 不在适用
num--
自增自减运算符,从swift3开始去掉++,--
改为num -= 1
image.png
3.for 循环
-
闭区间运算符:
a...b
,: a <= 取值 <= b(0...3 0<= X <=3) -
写法:
image.png - image.png
注意点:for 循环的取值 i
默认是let
常量,如果想他的值可以在前面添加 var
字段 for var i in 1...3
- 如果你的for循环里面用不到
i
则可以写成for _ in 0...3 {}
- 半开区间运算符
a..<b
,标识:a <= 取值 < b
- 区间运算符 运用在数组上
- 运用
let names = ["A","B","C",“D”]
for name in names[0...2] {
print("name = \(name)")
}
-
单侧区间:让区间朝一个方向尽可能远
image.png
names[2...]
数组不会越界,达到最大值,此处代表 从2到3,取值为 ”C",“D”,左侧方向也是同样道理
- 如果写在数组外面
let range = ...5
代表 从 无穷小 到 5!
image.png
可以调用 contains()
方法,是否包含某个数。
- 区间类型
- 范围的类型是 区间类型例如:
let range = ...5
-
let range1: ClosedRange<Int> = 1...3
闭区间类型 let range2:Range<Int> = 1..<3
let range3: partialRangeThrough<Int> = ...5
- 字符、字符串也可使用区间运算符,但是默认不能用在
for-in
中 !
image.png -
带间隔的区间符
image.png
注意这里 如果through取值为10 最后也会包含这个值
6. Switch
-
case 跟 default 后面是不能加{}的
-
switch 后面可以不加 break;
- image.png
-
如果想要贯穿Switch 可以加
fallthrough
即可 -
注意点:必须要保证能处理所有情况,记得后面加上
image.pngdefault: break
*如果能保证你已经处理的所有类型,default :break
也不是必须要加的:例如枚举类型
-
复合条件 他的条件 可以是字符跟字符串
7. 区间匹配跟元组匹配
image.png后面的一个代码的意思:
- 代表 这个点是否在一个正方形里面
-
(_,0)
下划线 表示:忽略这个值,只要后一个匹配就可以
8.值绑定
image.png可以把 x的值赋值给后面case语句的变量
9. Where
image.png这里 where 是决定 where后面的条件是否能进入{} ,而不是退出循环,相当于 continue
函数
- func pi() -> void {
} func 函数名(参数)-> 返回值{}
- 函数的形参 默认就是
let
常量类型,而且只能是 let常量,不允许在左边写var
.
- 隐式返回
返回值 只有一句表达式时,可以不写 return
-
返回元组,实现多返回值
image.png - 函数的文档注释 固定格式
/// 第一行【概述】
///
/// 功能描述
///
/// - Parameter v1:第一个参数
/// - Parameter v2:第二个参数
/// - Returns: 返回值描述
///
/// - Note:批注
///
func sum(v1: Int,v2: Int) -> Int { v1 + v2 }
https://swift.org/docunmetation/api-design-guidelines/
6.参数标签
func goToWork(at time:String){ } goToWork(at:"8:0:0")
- 可以使用
_
省略函数标签
func (_ v1:Int , _ v2:Int) ->Int {v1+v2}
-
默认参数
image.png
C++ 的默认参数值是从右边开始设计的,不允许隔空设置!
image.png
func sum(_ v1:Int , v2:Int) -> Int{v1+v2}
这里下划线的意思是,你在传参的时候 可以忽略V1标签即:sum(20,v2:15)
.[图片上传失败...(image-cef63a-1611909761520)]
7.可变参数
image.png可以暂时认为numbers
是一个数组
- 一个函数最多只能有一个可变参数
- 紧跟在可变参数后面的一个参数 不能省略参数标签,不能加下划线
8.Print函数
image.pngprint函数:separator:分隔符,terminator:结束符
,你可以传参来 自己添加分隔符跟结束符
- 输入输出参数
-
用
inOut
定义输入输出参数
func add(_ num: inout Int) { num = 20 } 调用 add(&number)
调用需要加上&
符号 -
交换两个数的值 用元组实现
image.png -
可变参数不能是
inout
,并且 inout 参数没有默认值,inout
的本质是地址传递 -
汇编: call 后面接着函数地址,lea 指令:地址传递指令
-
inout
只可以传入 可以被多次赋值的变量
10.函数重载
- 规则: ** 函数名相同 ** 参数个数不同、参数类型不同、参数标签不同
- 返回值类型跟函数重载无关
11. 内敛函数
- 如果开启了编译器优化(release 模式默认开启优化),编译器会自动将某些函数变成内敛函数
- 内敛函数可以将函数调用变成函数体代码
- 函数体比较长不会内敛
- 递归调用不会内敛
- 包含动态派发不会内敛
12 函数类型
- 由参数类型跟返回值类型一致
- 函数可以作为:参数,返回值,属性等等
13
image.pngimage.png
补充:
@inline
内敛标识
@inline(never) func test(){
print("test")
}
网友评论