前言
Swift 是一门强类型语言,全面支持 Unicode 编码。
Swift 中的定义和实现是在同一个单元中的,通常一个 Swift 源代码单文件是以
.swift
结尾的。Swift 不需要单独编写一个
main
函数作为入口,在 Swift 语言中函数是一等成员,编译器会自动将遇到的第一个函数作为入口。Swift 允许我们不用在行尾加分号
;
。但如果在同一行有两个甚至多个表达式,需要在每个表达式后面加上分号。Playground 是一种编写代码时可以即时预览代码运行效果的功能。使用 Playground 后,在实际项目中可以为我们节省不少功能调试和函数测试时间,这些时间完全可以从事其他创造性的活动。
1、命名规则
标识符的构成规范
1、标识符中大小写代表不同的含义。
2、不能包含数学符号、箭头、保留的 Unicode 码位、连线符与制表符。
3、可以包含数字,但是数字不能作为标识符的首字母。
4、不能使用 Swift 保留的关键字作为标识符。值得注意的是 Swift 的标识符可以使用中文命名,这得益于 Swift 中的字母采用的是 Unicode 编码,Unicode 的中文翻译是统一编码制,其中不仅有英文,还有亚洲文字,甚至我们常用的表情 “? ” 也在 Unicode 编码中。
标识符的命名方法
1、Swift 中类、协议、结构体、枚举的标识符中的第一个字符通常要大写。
2、方法的标识符中第一个字母通常为小写。
3、标识符整体的命名采用 “驼峰式” 的命名规则。如果标识符由多个单词组成,那么标识符的首字母遵从上面的命名规则,而其他单词的首字母全部大写,整个标识符中的多个单词通过大写的首字母做出了清晰的划分,看起来就像是骆驼的驼峰一样,避免了使用下划线 “_” 来分割单词。
2、常量与变量
在 Swift 中声明变量使用
var
关键字,声明常量使用let
关键字。// 使用 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
函数。// 在控制台中输出 Swift print("Swift")
print
这个函数默认是换行的,在print(items: Any...)
中参数items
是可变参数,如果传入多个参数,则每个参数之间都会用一个空格隔开。print("1", "2") print("3", "4")
打印结果为
1 2 3 4
也可以对
items
中的参数指定分隔符和终止符,即使用另一个重载的print
方法。注意,带有分隔符和终止符的print
方法是不换行的。print("a", "b", "c", separator: "*", terminator: "end")
打印结果为
a*b*cend
Swift 使用字符串插值的方式在输出的内容中加入常量或变量的值。
- 首先将常量或变量名放入
\()
的括号中。 - 然后将
\(常量名)
或\(变量名)
当作占位符插到字符串的相应位置。 这样
print
函数在输出时就会在该位置插入常量或变量的值。let name = "xiao ming" print("he is \(name)")
打印结果
he is xiao ming
- 首先将常量或变量名放入
print
更适用于在 playground 中调用代码,在真正的工程中,代码通常比较复杂,如果你想知道某个对象的值,则加入一个print
语句之后需要重新编译,会消耗很多时间成本。而且在程序运行时,编译器不会过滤我们手写的print
,而这些print
对用户而言是没有任何意义的,所以在工程中尽量不要写print
,养成打断点的好习惯。