美文网首页
《写给大忙人看到Swift》第1章.Swift介绍 阅读笔记

《写给大忙人看到Swift》第1章.Swift介绍 阅读笔记

作者: dibadalu | 来源:发表于2016-03-03 23:30 被阅读68次

    1.1 基本语法

    1.1.1 变量和常量

    • var关键字:声明一个变量
    • let关键字:声明一个常量

    这样的声明规则适用于Swift中的所有数据类型,有别于Objective-C,在Objective-C中,是由类型本身决定是否是可变还是不可变。在Swift中,一个对象的可变版本与不可变版本具有相同的类型——并不是子类(subclass)的关系。

    • Swift是一门强类型语言(每一个变量的类型在编译时期就已经确定了,并且在整个生命周期里只能存储固定类型的值)。

    这样的规则有助于Swift成为一门具有安全性的编程语言:编译器会阻止混合类型之间进行操作,并可以引发异常结果。

    • 在使用变量之前,必须给变量设置一个初始值。
    • Swift有一个功能叫类型推断(type inference)。如果编译器能够从初始值中获取到足够多的信息,进而推断出初始值的类型,那么在声明变量时可以忽略掉具体的类型。

    在选择是否指明类型时,要考虑两件事:

    1. 代码的可读性
    2. 当类型可以通过编译器推断时,开发者可能依然希望明确地指定某种类型,来为代码增加额外的安全检查。

    1.1.2 字符串插值

    • 可以利用字符串的插值操作,将变量、常量和其他表达式的值添加到输出中。
    • 字符串插值操作不仅仅可以适用于输出,在使用字符串的任何地方都可以使用字符串插值。

    1.2.3 流程控制

    *** 条件语句 ***

    if语句

    与Objective-C有些不同之处:

    • Swift中减少了不必要的语法结构:if语句并非必须将检测表达式放入括号中。
    • 条件语句的代码块必须在大括号中。
    • 检测表达式的结果必须明确地为true或false

    switch语句

    switch语句基于Objective-C,不过在Swift中,它更加强大,有两个重要的区别:

    • 在switch中必须覆盖每一种可能出现的情况(default分支就是用来满足这一需求的)。
    • case分支语句处理方式的重大改变,当遇到下一个case分支开始时,当前的case语句就会自动结束,无须添加break语句。

    *** 循环语句 ***

    for语句

    for语句的检测表达式可以忽略括号

    for-in语句

    可以迭代集合中的每一项。有两种新的区间运算符可以用于for-in循环语句中的迭代区间。

    1. “..<”是半开区间运算符,它包含区间最左端的值,但是不包含最右端的值。
    2. “...”是闭区间运算符,它包括区间两端的值。

    while语句

    只要检测条件为true,就会一直进行迭代。如果一开始,检测条件就为false,循环语句不会迭代任何内容,并且忽略掉整个while语句。

    do-while语句

    在循环的尾部计算检测条件,这样,就可以保证循环语句至少被迭代一次,即使当检测条件为false,也会迭代最后一次(可能发生在第一次迭代)。

    注意:

    • 使用循环语句时,当需要调整迭代次数时,可以通过完全退出迭代(使用break关键字)或忽略单次迭代(使用continue关键字)的方法进行调整。使用break可以立即跳出当前循环,并取消之后的迭代。使用continue可以终止当前迭代,并立即开启下一次迭代。
    • 在嵌套循环中,break和continue只会影响内部循环。Swift有一个强大的功能:给循环语句添加一个标签(label,名称自己命名),然后在内部循环中指定希望break或continue到哪个循环中。一个标签由名称之后跟着一个冒号构成,并且标签位于循环语句关键字之前。

    1.2 基本数据类型

    1.2.1 整型

    存储整形值的基本类型是Int。
    当需要特定长度的整形时,有Int8、Int16、Int32和Int64。
    Int类型同样有无符号的版本,如UInt8等。

    注意:

    • 由于Swift是一门强类型语言,代码中不能随意混合搭配使用Int的各种类型,并且不能在混合类型之间做数学运算和比较操作。

    1.2.2 Double和Float

    当使用小数时,编译器总是将其推断为Double类型,而不是Float。因此,如果不需要64位的高精度,需要显式地将变量声明为Float。

    1.2.3 布尔型

    Swift使用true和false表示布尔值。在Swift中只有表达式显式地返回一个布尔类型才能被用于布尔值的声明。

    1.2.4 字符串

    在Swift中,字符串只需要简单地置于双引号内即可。使用“+”或“+=”可以对字符串进行拼接、追加。但是,不能直接将Character与String进行拼接,需要将Character包含于新的String来进行拼接。
    另外,Swift可以通过“==”对String直接进行比较。

    1.2.5 数组

    数组是集合类型中的一种,用来存储相同类型的有序列表。在Swift中,声明数组时,必须指定数组包含的类型。
    与OC不同,在Swift中,可以把结构体、枚举和类添加到数组中,这是因为如果将枚举或结构体添加到数组中,此时添加的是对象的一份副本,而不是原始对象的引用;如果添加的是类,那么会将对象的引用添加至数组中。同样的规则适用于数组的传递,因为数组是结构体,所以数组传递的时候是一份副本,而数组中的元素是副本还是引用,取决于该元素是结构体、枚举还是类。

    1.2.6 字典

    字典是存储无序相同类型的集合,存储在其中的每一个对象都有唯一的一个Key。

    相关文章

      网友评论

          本文标题:《写给大忙人看到Swift》第1章.Swift介绍 阅读笔记

          本文链接:https://www.haomeiwen.com/subject/pmlokttx.html