swift中文文档粗略学习随记
函数
定义函数 和声明函数不同的是 它和普通变量一样冒号跟类型
var addMuta:() -> Int = addP
函数作为返回类型 看到两个箭头差点懵逼 总结为 以第一个箭头为开始
闭包
看到定义瞬间懵逼 捕获值 这个用词也是醉的不行
闭包表达式的标准格式如下 参数写在大括号内 闭包的函数体由in引入 in 表示 参数和返回值已经完成 闭包函数体即将开始
{ (parameters) -> returnType instatements
}
根据上下文推断类型 意思是:可以根据调用函数的参数和返回值 来推断闭包函数的参数和返回值 那么这时候的闭包函数的参数和返回值就可以省略 事实上当闭包作为参数传递给函数时,都可以推断出闭包的参数和返回值类型
单表达式闭包隐式返回
参数名称缩写
运算符函数
函数尾随
let strings = numbers.map {(var number) -> String invar output = ""while number > 0 {output = digitNames[number % 10]! + outputnumber /= 10}return output
}
// strings 常量被推断为字符串类型数组,即 [String]
// 其值为 ["OneSix", "FiveEight", "FiveOneZero"]
map后面不需要有括号 因为只有一个参数
map会循环numbers数组中的数 调用 闭包
添加了!叹号 因为字典下标返回一个可选值 表明即使key不存在也不会查找失败
捕获值
闭包可以在其定义的上下文中捕获常量或变量。即使定义这些常量和变量的原域已经不存在,闭包仍然可以在闭包函数体内应用和修改这些值
Swift最简单的闭包形式就是嵌套函数,也就是定义在其他函数体内的函数。嵌套函数可以捕获其外部函数所有的参数已经定义的常量和变量。
枚举
enum CompassPoint {case Northcase Southcase Eastcase West
}
case关键词表明新的一行成员值将被定义。
注意: 和C和OC 不同,Swift的枚举成员在被创建时不会被赋予一个默认的整形值。在上面的例子中,North ... 不会隐式地赋值为0 相反的 这些不同的枚举成员在CompassPoint 的一种相思定义中拥有各自不同的值
多个成员值可以出现在同一行上,用逗号隔开
enum Planet {case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
switch 和 枚举经常搭配使用 需要注意的是 你必须列出所有的枚举成员 否则无法通过编译 当然了 你可以使用default来涵盖所有未明确被提出的枚举成员
可以把枚举成员赋值给一个变量 还可以把另一个成员再赋值给这个变量 不过这个变量只能存在该枚举的一个成员
原始值 rawValue 可以用这个关键字来访问枚举成员的原始值
原始值的隐式赋值
你为一个枚举成员赋值为1 之后的成员都被隐式赋值
注意: 原始值构造器是一个可失败构造器,因为并不是每一个原始值都有与之对应的枚举成员。这里出现可选值
递归枚举
你可以在枚举成员前加上一个indirect来标识这成员可递归。
结构体
类与结构体的不同之处:
继承允许一个类继承另一个类的特征
类型转换允许在运行时检查和解释一个类实例的类型
结构器允许一个类实例释放任何其所被分配的资源
引用计数允许对一个类的多次引用
结构体和枚举是值类型
值类型被赋予给一个变量、常量或者本身被传递给一个函数的时候,实际上操作的是其的拷贝copy 占用不同的内存空间 拷贝后 在后台 是两个完全不同的实例
与值类型不同,引用类型在被赋予到一个变量、常量或者被传递到一个函数时,操作的是引用,其并不是拷贝。因此,引用的是已存在的实例而不是其拷贝 相当于浅拷贝
恒等运算符
等价于 ===
不等价于 !==
这两个运算符检测两个常量或者变量是否应用同一个实例
请注意“等价于”(用三个等号表示,===)与“等于”(用两个等号表示,==)的不同
“等价于”表示两个类类型 的常量或者变量引用一个类实例
“等价”表示两个实例的值“相等”或“相同”,判定时要遵照类设计者定义的评判标准,因此相比于“相等”,这是一种更加合适的叫法
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
