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 占用不同的内存空间 拷贝后 在后台 是两个完全不同的实例

与值类型不同,引用类型在被赋予到一个变量、常量或者被传递到一个函数时,操作的是引用,其并不是拷贝。因此,引用的是已存在的实例而不是其拷贝 相当于浅拷贝

恒等运算符

         等价于 === 

         不等价于 !==

         这两个运算符检测两个常量或者变量是否应用同一个实例

         请注意“等价于”(用三个等号表示,===)与“等于”(用两个等号表示,==)的不同

             “等价于”表示两个类类型 的常量或者变量引用一个类实例

             “等价”表示两个实例的值“相等”或“相同”,判定时要遵照类设计者定义的评判标准,因此相比于“相等”,这是一种更加合适的叫法



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部