你的位置:首页 > 操作系统

[操作系统]Swift语法总结补充(一)


1. 可选类型是一种类型,String?就是Optional<String>,所以函数参数也可以声明为它
2. a??b??c 如果a有值返回a,a为nil返回b,b也也为nil,前面的整体结果就是nil返回c.条件是??前面的都必须是optional的,??后面的类型必须和??前面的一致,结果等价于三目运算符a!=nil?a!:b
3. 遵从GeneratorType协议的对象有一个next方法可以用来遍历,你可以自定义generator遵循generatorType协议,自己就可以根据这个方法做循环,你在next方法中写好遍历的顺序就好.
4. 遵从SequenceType协议的对象可以用for in来循环,每个SequenceType对象里面包含对应着一个generator,也可以获取generator后做while循环,也可以直接写for in循环,for in出来每项的值就是generator中next方法的返回值
5. 区间运算符...和..<其实是Range<T>类型的对象,这个对象有一个generate方法,返回的是RangeGenerator<T>类型结构体,它遵循GeneratorType协议,所以...和..< 也能做for in 循环
6. 数组过滤方法可以用闭包,如:oldArray.filter{ $0 > 30 },数组还有个根据数组值计算的的方法,oldArray.reduce(1,combine: {$0 + $1}) 结果就是1和数组中的每个元素相加
7. Int和string都有map方法,someName.map{name in "Hello,\(name)"}??"Hello world!" name是个可选类型,你不需要做可选绑定,如fil果name是nil,这个map方法返回的值也是nil
8. 函数的柯里化就是多参函数变成一个参数调用的返回值是函数,再调用的这个函数传入第二个参数,这中间得到的函数叫外部这个函数的偏函数,函数柯里化只需要把函数的多个参数分别写在不同的括号里就可以了
9. 在类命名访问成员方法,得到的是一个可以函数柯里化的函数,第一个参数是类对应的对象,后面的参数就是这个函数应该有的参数
10. swift的枚举可以有相关值(就是传参),有相关值的两个枚举值不能用==比较,需要自己重载==运算符,而普通的枚举是可以通过==比较的
11. 枚举是可以有原始值的(默认值),可以是String,Character,Int,Float类型的,如果是Int后面的枚举会递增,通过rowValue可以获取到原始值
12. 由于swift初始化方法的安全检查太严格,在设置类似于数据源数组的时候可以用lazy 声明,并用闭包返回值
13. Any表示任何类型除了方法类型,AnyObject表示任何class类型的实例
14. 在协议前加@objc表示协议可选,它只对class有效;在方法和属性前加optional表示属性和方法可选protocol<SomeProtocol,AnotherProtocol>就可以表示遵循这两个协议的对象




丹麦自助游攻略2015怎样去丹麦旅游去丹麦哪个旅行社好丹麦旅游攻略大全丹麦旅游攻略探访吉林高句丽王城的辉煌文明(全文) 2015春节广东跨年演唱会去哪看?广东跨年狂欢夜哪里最热闹? 2015广东卫视跨年狂欢夜在哪举行?广东卫视跨年狂欢夜演出有哪些? 2015冬天岭南印象园有什么好玩的?1月广州岭南印象园有什么活动? 金色密云——白龙潭与水库鱼 探秘朝鲜时装秀 "神奇国度"里的"平壤style"(全文) 深圳北到长沙南有高铁吗? 乘森林小火车 饱览双龙峡秋色 广州到森波拉冰川水谷有车吗?广州到佛冈森波拉冰川水谷怎么坐车? 长隆水上乐园暑期特价?广州长隆水上乐园特价门票在哪买? 2015长隆冲浪音乐节攻略?广州长隆冲浪音乐节门票多少钱? 广州长隆冲浪音乐节8月活动?长隆冲浪音乐节有什么好玩的? 海南兴隆热带花园的门票是多少? 厦门有哪些便宜又好玩的地方?最好是不要门票的 厦门有什么特色小吃? 2015年端午节丽江天气怎么样? 12105C474JAT2A Datasheet 12105C474JAT2A Datasheet SQCB7M1R7BAJME\500 Datasheet SQCB7M1R7BAJME\500 Datasheet AQ142M331KAJME Datasheet AQ142M331KAJME Datasheet 深圳惠州1日游价格 深圳惠州1日游价格 深圳惠州1日游价格 深圳跟团到惠州旅游 深圳跟团到惠州旅游 深圳跟团到惠州旅游 深圳到惠州三天游 深圳到惠州三天游 深圳到惠州三天游