一: 区间运算符
二: switch case语句
三: 函数 (内联函数 函数重载 嵌套函数)
一 区间运算符
let names = ["a", "b","c","d"]
// 1 闭区间运算符
for i in 0...3 {
print(name[I])
}
// 2 半开区间运算符
a..<b 代表 a<=值<b
for i in 0..<3 {
print(name[I])
}
// 3 单侧区间
names[2...] // 2~3
names[...2] // 0~2
names[..<2] // 0~1
// 4 区间变量
let range = ...5 // -负无穷 到5
range.content(7) false // 判断是否包含7
// 5区间可以是Int 也可以是字符串
let range = "a"..."z"// 打印字符串, 注意没指定类型就是字符串
// 6间隔区间符方法
let hour = 11
let hourInterval = 2
从4开始 到11 间隔2
for tickMark in stride(from: 4, through: hour, by:hourInterval) {
print(tickMark)
}
// 打印 4 6 8 10
二 switch case语句
对比oc
1 switch case语句不需要写break,也不会贯穿
2 想要贯穿加fallthough
3 不需要写{},但是case后最少要有一句
4 所有case都处理了, 不需要加default
5 default里面需要有break, 因为最少要有一句话, default也不例外
基础用法
截屏2022-04-12 下午3.58.14.png
截屏2022-04-12 下午3.59.29.png
截屏2022-04-12 下午4.01.18.png
可以匹配区间 匹配元组
截屏2022-04-12 下午4.08.00.png
复合条件 就是case同时可以有多个条件, 支持string character
截屏2022-04-12 下午4.08.40.png
值绑定 外面的值case可以用
截屏2022-04-12 下午4.11.14.png
where case可以加条件 for循环也可以加条件
截屏2022-04-12 下午4.14.23.png
截屏2022-04-12 下午4.14.52.png
截屏2022-04-12 下午4.14.56.png
标签语句 ???
截屏2022-04-12 下午4.18.22.png
三: 函数
函数定义
Swift 定义函数使用关键字 func。
定义函数的时候,可以指定一个或多个输入参数和一个返回值类型。
每个函数都有一个函数名来描述它的功能。通过函数名以及对应类型的参数值来调用这个函数。函数的参数传递的顺序必须与参数列表相同。
函数的实参传递的顺序必须与形参列表相同,-> 后定义函数的返回值类型。
语法
func funcname(形参) -> returntype
{
Statement1
Statement2
……
Statement N
return parameters
}
隐式返回 就是函数体就一句不用写return了
截屏2022-04-12 下午4.21.52.png
返回元组 实现多返回值
截屏2022-04-12 下午4.23.15.png
函数文档注释
截屏2022-04-12 下午4.25.00.png
函数重命名, 省略
截屏2022-04-12 下午4.28.52.png
函数默认参数值
截屏2022-04-12 下午4.30.45.png
可变参数
截屏2022-04-12 下午4.40.43.png
截屏2022-04-12 下午4.47.42.png
截屏2022-04-12 下午4.51.08.png
输入输出参数 用inout 修改函数外面变量的值
截屏2022-04-12 下午4.59.38.png
NSString * str = @"哈哈";
NSLog("内存地址:%p, 指针地址:%p", str, &str);
函数重载 非重写
规则 1 函数名相同, 2 参数个数不同/ 参数类型不同/参数标签不同
截屏2022-04-12 下午6.39.15.png
截屏2022-04-12 下午6.39.28.png
函数重载注意点
截屏2022-04-12 下午5.15.47.png
内联函数 @inline 默认release模式就是开启内联函数
func test(){
print("哈哈")
}
test()
// 开启内联函数, 即test() 等价于调用 这句print("哈哈")
调用函数时候直接执行了函数的函数体
这样减少了调用函数的开销,开辟和回收栈空间
截屏2022-04-12 下午5.20.54.png
1 函数体比较长
2 包含递归调用
3 包含动态派发(oc调用)
以上函数不会触发内联函数
截屏2022-04-12 下午7.03.28.png
截屏2022-04-12 下午5.37.37.png函数类型 变量中的函数类型, 作为参数, 返回值
截屏2022-04-12 下午5.40.36.png
截屏2022-04-12 下午5.42.42.png
typealise 别名 用这个标识符重新起名字
截屏2022-04-12 下午5.46.43.png
嵌套函数
截屏2022-04-12 下午5.48.42.png
网友评论