文档章节

Swift学习记录

铂金小鱼
 铂金小鱼
发布于 2014/06/05 17:24
字数 1919
阅读 73
收藏 1
点赞 0
评论 0

SWIFT INTRO—BY PDC


1、SWIFT具有简洁的基本数据类型,集合类型则只有Array和Dictionary

2、简化常量和变量的使用

3、不管常量还是变量,声明时都需要赋值,不然编译不过

4、常量和变量声明时可以不指定类型

5、SWIFT是支持Unicode的

6、println替代了NSLog

7、语句不需要分号作为结束标记

8、true和false替代了YES和NO

9、SWIFT对布尔判断的条件是很严格的

10、多元组特性,类似C的联合体

11、可以使用_来主动忽略多元组中的对应值

12、可以使用索引来引用多元组中的对应值,甚至采用KV形式的关联,就像数组一样

13、可选声明特性,该特性可用于所有类型。此特性表示一个常量或者变量很大可能会是使用者期待的类型,但这个所谓的期待类型并非强制的,是可选的,因为此常量或变量可能不会是此期待类型,可能是其他一切类型之一。这是弱类型语言的动态特性

14、可选常量或变量如果得不到期待类型,则为nil

15、可选常量或变量可用作IF的条件,此时如果常量或变量的确是期待类型,判断为true,否则为false

16、强制拆箱与可选绑定—可选常量或变量在IF和WHILE语句中的使用方式

17、如果可选常量或变量在声明时未赋值,默认为nil

18、隐式拆箱的可选常量或变量。这类可选常量或变量在使用时可以不用!来强制期待类型,SWIFT会自动按期待类型来拆箱

19、断言。断言不通过时后续的语句将不会运行

20、SWITCH支持值绑定。SWIFT的SWITCH可以不需要break

21、SWITCH支持where条件过滤,类似SQL的where

22、函数可以输出多个返回值,这是通过多元组实现的

23、函数的参数别名。可以更清楚地了解参数的语意

24、快捷函数参数别名。简化参数别名的声明

25、函数参数支持默认值

26、变长参数。本质是强类型数组函数

27、变量参数。函数内对变量的改变不影响原变量的值,相当于复制行为

28、双向参数。函数内即可以对传递进来的变量作修改,同时也会反映到原变量。只针对变量,常量与值对象以及变长参数不适用。双向参数不能有默认值。inout无法与var或let共同修饰

29、函数类型。函数类型可以当作一种特殊的数据类型,因此可以像使用Int那样来使用。本质上就是C的函数指针,或者说是OC的块,但更简洁

30、将函数类型作为函数的参数。因此可以实现闭包回调的功能

31、函数类型甚至可以作为函数的返回值类型。

32、嵌套函数。可以在函数体内再声明函数。嵌套函数的作用域只在母函数内

33、SWIFT的闭包。闭包更多是一种函数使用的风格,而非语言规范

34、闭包更多以匿名的形式出现,因为这种更轻量更简洁

35、SWIFT的闭包同样可以获取上下文内的环境变量

36、闭包的书写可以忽略参数类型,甚至不需要声明返回值,但却可以return出来,这是SWIFT闭包的上下文类型推论特性

37、单一表达式闭包的隐式返回。当应用闭包的上下文可以确定闭包的返回值类型时,闭包可以省略返回值的声明

38、闭包的简短参数名。进一步简化闭包的书写,这是充分利用了弱类型语言的自动类型判断的优点

39、拖尾闭包。如果函数的最后一个参数是闭包,闭包可以独立书写,但必须挨着函数之后,这样可以让复杂的函数声明简洁一些

40、闭包的上下文值捕获。这是闭包的特性。闭包对上下文状态的保持会持续到闭包生命周期的结束

41、常量与变量的特性同样适用于闭包

42、枚举。枚举定义了一种自定义类型

43、枚举类型的变量在赋值时可以省略枚举类型名,直接用.引用枚举内部值

44、枚举可以关联数据类型,从而在运行时进行赋值

45、枚举具有默认值,根据数据类型自动赋值

46、结构和枚举都是值类型,但类是引用类型,类似C的指针

49、身份操作符。用于引用类型的判断

50、结构一般用于压缩一批相关联的数据,且允许复制引用,结构不在乎继承和行为定义

51、SWIFT的集合类型Array和Dictionary是建立在结构上的,而非类,这点跟NSArray和NSDictionary是有本质区别的。因此它们遵循结构的复制原则。对于Dictionary,这个原则的体现很简单,每次对原变量的额外引用都会导致复制的产生。对于Array,则复杂得多,SWIFT的Array更像C的Array,一般来说,如果操作涉及到改变Array的长度,则会是复制,否则,会是引用。

52、结构中的属性支持get/set

53、属性侦听器。当属性发生set的变化时可以变化前或者变化后插入自定义执行语句。不适用于延迟实例化属性。类似AOP

54、全局与局部变量或常量。static与class修饰符用于在结构枚举与类中声明全局变量或常量。引用采用  类型.全局变量OR全局常量 。

55、方法。类、结构、枚举都可以自定义方法

56、实例方法。是从属于实例的方法。

57、在调用方法时,第一个参数不需要写别名,但之后的参数都要写别名

58、方法参数名与类、枚举、结构的实例变常量重名时,可以在方法体内用self引用类枚举结构的实例变常量

59、默认情况下,类可以直接在实例方法中对实例属性进行直接赋值,但结构和枚举则不允许,要允许的话需要在方法前加mutating修饰

60、类型方法。是从属于类型的方法。规则类似全局变常量。

61、下标。可以给结构、类、枚举定义下标,得到跟Array和Dictionary一样的使用方式。下标也是支持get/set

62、重载。即可以对方法重载,也可以对属性重载,对属性重载本质也是对get/set方法的重载

63、可以使用@final修饰来避免子类重载

64、实例构造的初始化。约定为init方法。但可声明多个不同结构的init构造方法。构造方法中具有不同的对外和对内标识也算是不同结构

未完待续......

© 著作权归作者所有

共有 人打赏支持
铂金小鱼
粉丝 9
博文 2
码字总数 3728
作品 0
佛山
iOS工程师
Swift 个人学习笔记 - 05: 集合类型(Array, Set, Dictionary)

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc
2017/02/22
0
0
Swift 个人学习笔记 - 06: 控制流

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc
2017/02/22
0
0
Swift 个人学习笔记 - 08: 类和结构体

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc
2017/03/10
0
0
Swift 个人学习笔记 - 07: 枚举

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc
2017/03/09
0
0
Swift 个人学习笔记 - 09: 属性

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc
2017/03/25
0
0
Swift 个人学习笔记 - 04: 字符串和字符

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc
2017/02/16
0
0
《从零开始学Swift》学习笔记(Day 11)——数据类型那些事儿?

原创文章,欢迎转载。转载请注明:关东升的博客 在我们学习语言时都会学到这种语言的数据类型,在Swift中数据类型有那些呢?整型、浮点型、布尔型、字符、字符串这些类型是一定有的,其中集合...

智捷课堂
2015/09/14
28
0
项目整理收集三

经过前两期的项目收集整体,我得到了许多同行朋友的支持和鼓励,使我更加觉得这种项目分享是有意义的,既然大家对我这么大的支持,那么小编怎么可以辜负大家对我的期望呢。废话少说,直接分享...

摸着石头过河_崖边树
2017/05/22
0
0
Swift 个人学习笔记 - 06: 闭包(Clousures)

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc
2017/03/01
0
0
fir.im Weekly - 30 天从 0 开始学 Swift

最近一周看到很多很好用的的轮子,忍不住推荐给大家。此外,本期 fir.im Weekly 还精选了一些实用的 iOS , Android , UI 动画的干货文章。让我们一起来看下: Hacking with Swift 由@稀土圈...

风起云飞fir_im
2015/11/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

用axios.all处理并发请求

如果我们需用在两个接口同时完成后在执行一些逻辑,我们可以使用axios.all处理并发请求: function getUserAccount() { return axios.get('/user/12345');}function getUserPermissio...

JamesView
22分钟前
0
0
SpringCloud 微服务 (十六) 服务追踪 Zipkin

问题 在服务中,有一个接口,该A接口中又调用了其他服务的B、C、D接口,出现一个请求耗时大的问题,这时候并不知道该B、C、D接口中哪个接口造成的耗时量,然后比如确定C服务接口出现的耗时量大,但...

___大侠
33分钟前
0
0
Java面试基础篇——第八篇:抽象类与接口的区别

1.抽象类 抽象类:如果一个类中包含有抽象方法,或这个类使用abstract关键字修饰,则称这个类是抽象类。 抽象方法是什么呢?抽象方法就是指用abstract关键字修饰的方法。 需要注意的是:抽象...

developlee的潇洒人生
49分钟前
2
0
jsoup 相关资料

1.jsoup 2.Jsoup概述 3.jsoup入门 4.jsoup Java HTML Parser 1.11.3 API

IT追寻者
51分钟前
0
0
JPA @MappedSuperclass 注解说明

基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang....

海博1600
今天
0
0
【一】Scala Configuration 相关API

Play使用了 Typesafe config library,但是也提供了一个有着更多Scala高级特性的的 Configuration 封装。不熟悉Typesafe配置的开发者可以移步 configuration文件的语法和特性文档。 读取配置...

Landas
今天
3
0
使用cookie技术 记住账号

1. 效果 2. 实现过程 2.1 前端 将用户的选中传递给后台 这个参数的获取是 参考:https://my.oschina.net/springMVCAndspring/blog/1860498 // var rememberLogin = $("#rememberLoginId").i...

Lucky_Me
今天
1
0
《趣谈网络协议》02之网络分层的真实含义

一、提出问题 1.提出问题 当你听到什么二层设备、三层设备、四层 LB 和七层 LB 中层的时候,是否有点一头雾水,不知道这些所谓的层,对应的各种协议具体要做什么“工作”? 2.这四个问题你弄...

aibinxiao
今天
2
0
Python3学习日志二 Python中的集合set和字典dict

1.集合set 定义一个集合set 我们可以看到定义集合set有两种不同的形式,如果要定义一个空的集合set不能用{}而是要用set();另外,集合是无序的,而且set中的元素是不可重复的,如果你定义了一...

Mr_bullshit
今天
0
0
adb 操作指令详解

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。 注:有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。...

孟飞阳
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部