Swift 基础知识

前言

  • Swift 是一门强类型语言,全面支持 Unicode 编码。

  • Swift 中的定义和实现是在同一个单元中的,通常一个 Swift 源代码单文件是以 .swift 结尾的。

  • Swift 不需要单独编写一个 main 函数作为入口,在 Swift 语言中函数是一等成员,编译器会自动将遇到的第一个函数作为入口。

  • Swift 允许我们不用在行尾加分号 ;。但如果在同一行有两个甚至多个表达式,需要在每个表达式后面加上分号。

  • Playground 是一种编写代码时可以即时预览代码运行效果的功能。使用 Playground 后,在实际项目中可以为我们节省不少功能调试和函数测试时间,这些时间完全可以从事其他创造性的活动。

  • Swift 教程

  • Swift Language Guide 中文版

  • SwiftUI

  • iOS 开发手册

1、命名规则

  • 标识符的构成规范

    1、标识符中大小写代表不同的含义。
    2、不能包含数学符号、箭头、保留的 Unicode 码位、连线符与制表符。
    3、可以包含数字,但是数字不能作为标识符的首字母。
    4、不能使用 Swift 保留的关键字作为标识符。

  • 值得注意的是 Swift 的标识符可以使用中文命名,这得益于 Swift 中的字母采用的是 Unicode 编码,Unicode 的中文翻译是统一编码制,其中不仅有英文,还有亚洲文字,甚至我们常用的表情 “😊 ” 也在 Unicode 编码中。

  • 标识符的命名方法

    1、Swift 中类、协议、结构体、枚举的标识符中的第一个字符通常要大写。
    2、方法的标识符中第一个字母通常为小写。
    3、标识符整体的命名采用 “驼峰式” 的命名规则。

  • 如果标识符由多个单词组成,那么标识符的首字母遵从上面的命名规则,而其他单词的首字母全部大写,整个标识符中的多个单词通过大写的首字母做出了清晰的划分,看起来就像是骆驼的驼峰一样,避免了使用下划线 “_” 来分割单词。

2、常量与变量

  • 在 Swift 中声明变量使用 var 关键字,声明常量使用 let 关键字。

    1
    2
    3
    4
    5
    // 使用 let 关键字定义了一个 String 类型的常量 str
    let str: String = "hello world"

    // 使用 var 关键字定义一个变量 age
    var age = 8
  • 声明时类型是可选的

    • 如果在声明时没有指定类型且赋了初值,编译器会自动推断常量或者变量的类型。
    • 如果在声明时指定了类型又赋了初值,那么指定的类型必须和赋给它们的值一样,Swift 是一门强类型语言,不能将变量本身类型之外的值赋值给它。
    • 如果没有赋给初值,务必声明变量或者常量的类型,并用冒号充当分隔符,否则编译会报错。
  • Swift 语言将具体的某种类型的值称之为类型字面量。例如 let num = 2.8 中的 “2.8” 就是浮点类型字面量。

  • Swift 的开发原则是尽量使用常量,因为常量的运行效率更高。如果你定义的变量在代码中没有发生改变,那么编译器会提示你把变量修改成常量。

3、类型推断

  • 如果在声明常量或变量时没有指定类型且赋了初值,编译器会自动推断常量或者变量的类型,这种机制被称为 “类型推断”。

  • Swift 是一门类型安全的语言,无论你是显式的声明类型,还是更习惯让系统去做类型推断,每个常量和变量的类型都是明确的。

  • Swift 会在编译期检查所有的类型,以保证系统在运行期安全无误。

4、注释

  • Swift 中的注释和其他语言中的注释功能基本一致,注释分为单行注释和块注释。

    • 单行注释是在单行代码的末尾使用 // 作为起点,后面的文字均为注释。
    • 块注释使用 /* 作为起点,使用 */ 作为终点,起点和终点之间的内容全部为注释,不参与代码的执行。
  • Swift 常用标注

    • // MARK: 添加注释说明,加 - 添加分割横线
    • // FIXME: 表示此处有 bug 或者要优化
    • // TODO: 一般用于写到哪了做个标记,然后回来继续
  • 注释不会对代码的执行产生任何影响。

5、输出常量和变量

  • 如果要把常量和变量的值输出到控制台,则应使用 print 函数。

    1
    2
    // 在控制台中输出 Swift
    print("Swift")
  • print 这个函数默认是换行的,在 print(items: Any...) 中参数 items 是可变参数,如果传入多个参数,则每个参数之间都会用一个空格隔开。

    1
    2
    print("1", "2")
    print("3", "4")
  • 打印结果为

    1
    2
    1 2
    3 4
  • 也可以对 items 中的参数指定分隔符和终止符,即使用另一个重载的 print 方法。注意,带有分隔符和终止符的 print 方法是不换行的。

    1
    print("a", "b", "c", separator: "*", terminator: "end")
  • 打印结果为

    1
    a*b*cend
  • Swift 使用字符串插值的方式在输出的内容中加入常量或变量的值。

    • 首先将常量或变量名放入 \() 的括号中。
    • 然后将 \(常量名)\(变量名) 当作占位符插到字符串的相应位置。
    • 这样 print 函数在输出时就会在该位置插入常量或变量的值。

      1
      2
      let name = "xiao ming"
      print("he is \(name)")
    • 打印结果

      1
      he is xiao ming
  • print 更适用于在 playground 中调用代码,在真正的工程中,代码通常比较复杂,如果你想知道某个对象的值,则加入一个 print 语句之后需要重新编译,会消耗很多时间成本。而且在程序运行时,编译器不会过滤我们手写的 print,而这些 print 对用户而言是没有任何意义的,所以在工程中尽量不要写 print,养成打断点的好习惯。

文章目录
  1. 1. 前言
  2. 2. 1、命名规则
  3. 3. 2、常量与变量
  4. 4. 3、类型推断
  5. 5. 4、注释
  6. 6. 5、输出常量和变量
隐藏目录