基础部分
Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的。
Swift 包含了 C 和 Objective-C 上所有基础数据类型,Int 表示整型值; Double 和 Float 表示浮点型值; Bool 是布尔型值;String 是文本型数据。 Swift 还提供了三个基本的集合类型,Array、Set 和 Dictionary ,详见 集合类型。
就像 C 语言一样,Swift 使用变量来进行存储并通过变量名来关联值。在 Swift 中,广泛的使用着值不可变的变量,它们就是常量,而且比 C 语言的常量更强大。在 Swift 中,如果你要处理的值不需要改变,那使用常量可以让你的代码更加安全并且更清晰地表达你的意图。
除了我们熟悉的类型,Swift 还增加了 Objective-C 中没有的高阶数据类型比如元组(Tuple)。元组可以让你创建或者传递一组数据,比如作为函数的返回值时,你可以用一个元组可以返回多个值。
Swift 还增加了可选(Optional)类型,用于处理值缺失的情况。可选表示 “那儿有一个值,并且它等于 x ” 或者 “那儿没有值” 。可选有点像在 Objective-C 中使用 nil ,但是它可以用在任何类型上,不仅仅是类。可选类型比 Objective-C 中的 nil 指针更加安全也更具表现力,它是 Swift 许多强大特性的重要组成部分。
Swift 是一门类型安全的语言,这意味着 Swift 可以让你清楚地知道值的类型。如果你的代码需要一个 String ,类型安全会阻止你不小心传入一个 Int 。同样的,如果你的代码需要一个 String,类型安全会阻止你意外传入一个可选的 String 。类型安全可以帮助你在开发阶段尽早发现并修正错误。
一、常量和变量
常量和变量把一个名字和一个指定类型的值关联起来。常量的值一旦设定就不能改变,而变量的值可以随意更改。
1、声明常量和变量
常量和变量必须在使用前声明,用let
来声明常量,用var
来声明变量。
lat age = 10
var name = "lilei"
你可以在一行中声明多个常量或者多个变量,用都好隔开:
let age01 = 10, age02 = 14, age03 = 18
var name01 = "lilei",name02 = "haimeimei",name03 = "xiaoming"
print(age01,age02,age03);
print(name01,name02,name03);
2、类型注解
当你声明常量或者变量的时候可以加上类型注解(type annotation),说明敞亮或者变量中药存储的值的类型。如果要添加类型注解,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。
var age: Int
var name: String
age = 10
name = "lilei"
你可以在一行中定义多个同样类型的变量,用逗号分割,并在最后一个变量名之后添加类型注解:
var red, green, blue: Double
注意:一般来说你很少需要写类型注解。如果你在声明常量或者变量的时候赋了一个初始值,Swift可以推断出这个常量或者变量的类型。
3、常量和变量的命名
常量和变量名可以包含几乎所有的字符,包括Unicode字符:
let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"
与变量不同,常量的值一旦被确定就不能更改了。尝试这样做会导致编译时报错;
4、输出常量和变量
用 print(_:separator:terminator:)
函数来输出当前常量或变量的值:
Swift用字符串插值(string interpolation)的方式把常量名或者变量名当做占位符加入到长字符串中,Swift会用当前常量或变量的值替换这些占位符。将常量或变量名放入圆括号中,并在开括号前使用反斜杠将其转移:
let age = 10
var name = "lilei"
print("年龄:\(age),名字:\(name)")
二、注释
请将你的代码中的非执行文本注释成提示或者笔记以方便你将来阅读。Swift的编译器将会在编译代码时自动忽略掉注释部分。
Swift中的注释与C语言的注释非常相似。单行注释以双正斜杠(//)作为起始标记:
// 这是一个注释
你也可以进行多汗注释,其起始标记为单个正斜杠后跟随一个星号(/),终止标记为一个星号后跟随单个正斜杠(/):
/* 这是个注释
但是是个多行的 */
与 C 语言多行注释不同,Swift 的多行注释可以嵌套在其它的多行注释之中。你可以先生成一个多行注释块,然后在这个注释块之中再嵌套成第二个多行注释。终止注释时先插入第二个注释块的终止标记,然后再插入第一个注释块的终止标记:
/* 这是第一个多行注释的开头
/* 这是第二个被嵌套的多行注释 */
这是第一个多行注释的结尾 */
三、分号
与其他大部分编程语言不同,Swift 并不强制要求你在每条语句的结尾处使用分号(;),当然,你也可以按照你自己的习惯添加分号。有一种情况下必须要用分号,即你打算在同一行内写多条独立的语句:
let cat = "🐱"; print(cat)
// 输出“🐱”
四、整数
整数就是没有小数部分的数字,比如42 和 -23 。整数可以是 有符号(正、负、零)或者 无符号(正、零)。
Swift 提供了8、16、32和64位的有符号和无符号整数类型。这些整数类型和 C 语言的命名方式很像,比如8位无符号整数类型是 UInt8
,32位有符号整数类型是 Int32
。就像 Swift 的其他类型一样,整数类型采用大写命名法。
1、整数范围
你可以访问不同整数类型的 min
和 max
属性来获取对应类型的最小值和最大值:
let minValue = UInt8.min // minValue 为 0,是 UInt8 类型
let maxValue = UInt8.max // maxValue 为 255,是 UInt8 类型
print(minValue,maxValue);
// 输出0 255
2、Int
一般来说,你不需要专门指定整数的长度。Swift 提供了一个特殊的整数类型 Int
,长度与当前平台的原生字长相同:
- 在32位平台上,
Int
和Int32
长度相同。 - 在64位平台上,
Int
和Int64
长度相同。
3 、UInt
Swift 也提供了一个特殊的无符号类型 UInt
,长度与当前平台的原生字长相同:
- 在32位平台上,
UInt
和UInt32
长度相同。 - 在64位平台上,
UInt
和UInt64
长度相同。
五、浮点数
浮点数是有小数部分的数字,比如 3.14159
、0.1
和 -273.15
。
浮点类型比整数类型表示的范围更大,可以存储比 Int
类型更大或者更小的数字。Swift 提供了两种有符号浮点数类型:
Double
表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。Float
表示32位浮点数。精度要求不高的话可以使用此类型。
注意:
Double 精确度很高,至少有 15 位小数,而 Float 只有 6
位小数。选择哪个类型取决