Swift GG__2
Posted 知直只志的妙妙屋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift GG__2相关的知识,希望对你有一定的参考价值。
for-in:遍历一个集合里面所有的元素
数字范围:
闭区间操作符( ... ),eg. for index in 1...5 { statement }
半开区间操作符( ..< ), eg. for index in 0..<5 { statement }
单侧区间操作符( 1... ), eg. for index in array[1...]{ statement }
自定义index的增量:
let minuteInterval = 5
for tickMark in stride(from: 0, to: minutes, by: minuteInterval) {
// 5分钟为增量(0, 5, 10, 15 ... 45, 50, 55)
}
switch语句里面每一个case分支都必须包含至少一条语句
case分支的模式也可以是一个值的区间
swift中switch的各个case不需要break识别到一个case就跳出switch块;如果需要继续识别,可以用fallthrough贯穿。
可以使用元组在一个switch语句中同时测试多个值,元组中的元素可以是区间;下划线 _ 匹配所有可能的值
值绑定Value Bindings:case 分支允许将匹配的值声明为临时常量或变量,并且在 case 分支体内使用。匹配的值与临时的常量或变量绑定。
case 分支的模式可以使用
where
语句来判断额外的条件。五种控制转移语句:
continue:停止本次循环,开始下一次循环
break:提前结束循环或switch
fallthrough:不会检查下一个case的条件,简单的让代码连接到下一个case中的代码
return
throw
带标签的语句:在该语句的关键词的同一行前面放置一个标签,作为这个语句的前导关键字(introducor keyword),并且该标签后面跟随一个冒号。
-
label name: while condition {
statements
}
可以显式指明需要continue或break哪一条语句
guard:后面必须跟else。类似断言,要求跟随其后的条件必须为真,否则执行else内容。只是为了提高程序可读性
检查API可用性:
if
// 在 iOS 使用 iOS 10 的 API, 在 macOS 使用 macOS 10.12 的 API
} else {
// 使用先前版本的 iOS 和 macOS 的 API
}
参数列表前面几个是最小的版本号,最后一个参数*是必须的。
函数也可以作为参数:可以定义一个类型为函数的常量或变量,并将适当的函数赋值给它;
var mathFunction: (Int, Int) -> Int = addTwoInts
// 可以像平常的常量或变量那样传入到参数列表里面
嵌套函数对外界不可见,只能被外围函数调用;但如果外围函数返回的是嵌套函数,那么其他域就可以调用这个嵌套函数
闭包:自包含的函数代码块,可以在代码中被传递和使用。(类似lambda)
包裹常量和变量:可以捕获和存储上下文中任意常量变量的引用
{ (parameters) -> returnType in
statements
}
尾随闭包是一个书写在函数圆括号之后的闭包表达式,函数支持将其作为最后一个参数调用。在使用尾随闭包时,不用写出它的参数标签。闭包作为唯一参数时圆括号也可以省略
值捕获 // TODO
闭包是引用类型:把函数或闭包传递给常量变量,实际上是传递了引用类型;因此赋值给多个变量,他们指向的也是同一个闭包
逃逸闭包:把一个闭包作为参数传到一个函数中,但是这个闭包在函数返回之后才被执行的闭包。通过在参数名前标注@escaping
逃逸闭包内需要显式引用self(xcode推荐,内存循环)
闭包不熟,要多练习
枚举:为一组相关的值定义一个共同的类型。保证类型安全。每个枚举都是一个全新的类型
枚举成员在被创建时不会被赋予一个默认的整型值。
关联值:枚举成员关联的值 case memberName(variables)
原始值:与默认值类似 case memberName=variable
原始值可以像其他语言的默认整型值那样实现隐式原始值
递归枚举:在枚举成员前加上indirect ;存储算术表达式,计算出枚举成员
以上是关于Swift GG__2的主要内容,如果未能解决你的问题,请参考以下文章