- Swift语言的Bool类型十分严格,只有true和false两种值,分别表示真和假
2.Swift支持两种特殊的基本数据类型 分别是元组类型和可选值类型
3.在Swift语言中,常常使用符号“”来表示匿名的概念,因此“”也被称为匿名标识符
4.在声明obj变量的时候,这里将其声明成了String?类型,在普通类型后面添加符号“?”,即可以将普通类型包装为Optional类型。
如果其附着类型对应的量值有具体的值,则其为具体值的包装。· 如果其附着类型对应的量值没有具体的值,则其为nil。 - 拆包将使用到Swift中的操作符“!”
6.“?”符号可以出现在类型后面,也可以出现在实例后面,如果出现在类型后面,其代表的是此类型对应的Optional类型,如果出现在实例名后面,则代表的是可选链的调用
7.在使用“!”进行Optional值的拆包操作时,必须保证要拆包的值不为nil,否则程序运行会出错
8.这种if-let结构实际上完成了判断、拆包、绑定拆包后的值到临时常量3个过程
9.typealias 类别别名
10.“()”结构可以将其他数据类型转换为字符串类型并且插入字符串数据的相应位置 - Character来描述字符类型
Character类型占9个字节的内存空间,String类型占24个字节的内存空间 MemoryLayout枚举来获取某个类型所占用的内存空间,其单位为字节
12.String类型的实例通过使用isEmpty方法来判断字符串的值是否为空字符串
、、、
var obj1 = ""
if obj1.isEmpty {
print("字符串为空")
}
、、、
13.“…”为范围运算符
14.uppercased 字符串转大写 lowercased 小写 hasPrefix 前缀 hasSuffix 后缀
- 数组的写法
、、、
var arr:[Int]
var arr1:Array<Int>
、、、 - 空合并运算符由“??”表示
、、、
var q:Int? = 8
var value:Int
value = (q != nil) ? (q!) : 0
、、、
使用空运算符后
、、、
var q:Int? = 8
var value:Int
value = q ?? 0
、、、
空合并运算符“??”是一个二元运算符。其需要两个操作数,第一个操作数必须为一个Optional值,如果此Optional值不为nil,则将其进行拆包操作,并作为空合并运算的运算结果。如果此Optional值为nil,则会将第二个操作数作为空合并操作运算的结果返回 - Range结构 var range1 = 0...10 ///>=0 且 <= 10
var range2 = 0..<10 /// >=0 且 <10 - “~=”运算符来检查某个数字是否包含于范围中
- while与repeat-while结构在C/Objective-C语言中也支持,并且功能基本一致,只是Swift语言将do-while结构修改为repeat-while
20.捕获switch元组的参数
要捕获的元素并不能起到匹配的作用,例如元组tuple中有两个元素,如果case条件为(let a,1),则在进行匹配时会匹配tuple中第2个参数,如果匹配成功就会将tuple元组的第1个参数的值传递给a常量,并且执行此case中的代码块,在这个代码块中,开发者可以直接使用常量a。因此,要捕获的元素在匹配时实际上充当着匿名标识符的作用,如上代码所示的第3个case子句,其条件为let(a,b),实际上这个条件始终会被匹配成功
、、、
var tuple = (0,0)
switch tuple { ///数据绑定
//对第一个进行捕获
case (let a,1):
print(a)
case (let b,0):
print(b)
case let(a,b): ///捕获元组中两个元素
print(a,b)
default:
print("")
}
、、、
21、 Swift中提供的流程跳转语句主要有continue (跳过本次循环,直接开始下次循环)、break(中断语句)、fallthrough(switch-case结构不自动进行中断操作)、return、throw (异常抛出)
22 、 guard-else语句也被称为守护语句
23 、函数 func methodName(param1,param2) -> returnValue {
实现
}
- 某个参数类型的后面追加符号“…”,就会将此参数设置为数量可变
- inout类型 需要在函数内部修改传递参数的变量的值需要声明为 inout
参数param声明为了inout类型,在传参时需要使用“&”符号(这个符号将传递参数变量的内存地址)eg:
、、、
func myFunc12(param:inout Int) {
param += 1
}
var para = 10
myFunc12(param: ¶)
print(para) 11
、、、 - 函数嵌套
、、、
///声明
var addFunc :(Int,Int) -> Int
addFunc = {
(param1:Int,param2:Int) in return param1 + param2
}
addFunc(2,3)
、、、
函数变量的赋值采用了闭包的方式,闭包的实质是一段有具体功能的代码块,其结构为{(param1,param2,…) in代码块},其最外面由大括号包围,内部小括号为参数列表,in为闭包关键字,之后需要编写实现相应功能的代码
网友评论