Swift 基础数据类型:
Int 表示整型值; Double 和 Float 表示浮点型值;Bool 是布尔型值; String 是⽂本型数据。
Swift 集合类型:
Array 、 Set 和 Dictionary
Swift 是⼀门类型安全的语⾔,这意味着 Swift 可以让你清楚地知道值的类型。如果你的代码需要一个 String ,类型安全会阻⽌
你不⼩心传⼊一个 Int 。同样的,如果你的代码需要⼀个 String ,类型安全会阻止你意外传⼊一个可选的 String 。类型安全可以
帮助你在开发阶段尽早发现并修正错误。
常量和变量
常量的值⼀旦设定就不能改变,尝试改变会导致编译时报错。
而变量的值可以随意更改为其他同类型的值。
声明常量和变量
常量和变量必须在使用前声明,用 let 来声明常量,⽤ var 来声明变量。如下:
let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0
你可以在一⾏中声明多个常量或者多个变量,⽤逗号隔开:
var x = 0.0, y = 0.0, z = 0.0
注意
如果你的代码中有不需要改变的值,请使⽤ let 关键字将它声明为常量。只将需要改变的值声明为变量。
类型注解
当你声明常量或者变量的时候可以加上类型注解(type annotation),说明常量或者变量中要存储的值的类型。如果要添加类型注
解,需要在常量或者变量名后⾯加上一个冒号和空格,然后加上类型名称。如下:
var welcomeMessage: String
声明中的冒号代表着“是...类型”,所以这⾏代码可以被理解为: “声明一个类型为 String ,名字为 welcomeMessage 的变量。”
“类型为 String ”的意思是“可以存储任意 String 类型的值。”
welcomeMessage 变量现在可以被设置成任意字符串:
welcomeMessage = "Hello"
你可以在⼀行中定义多个同样类型的变量,用逗号分割,并在最后⼀个变量名之后添加类型注解:
var red, green, blue: Double
注意
⼀般来说你很少需要写类型注解。如果你在声明常量或者变量的时候赋了一个初始值,Swift 可以推断出这个常量或者变量的类
型。
常量和变量的命名
常量和变量名可以包含任何字符,包括 Unicode 字符:
let π = 3.14159
let 你好 = "你好世界"
let ?? = "dogcow"
常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开头,但是可以在常
量与变量名的其地方包含数字。
一旦你将常量或者变量声明为确定的类型,你就不能改变其存储的值的类型。同时, 你也不能将常量与变量进行互转。
注意
如果你需要使用与 Swift 保留关键字相同的名称作为常量或者变量名,你可以使用反引号(`)将关键字包围的方式将其作为名字使
用。无论如何,你应当避免使用关键字作为常量或变量名,除非你别无选择。
输出常量和变量
你可以用 print(_:separator:terminator:) 函数来输出当前常量或变量的值:
print(你好)// 输出“你好世界”
print(_:separator:terminator:) 是一个⽤来输出一个或多个值到适当输出区的全局函数。如果你⽤Xcode,
print(_:separator:terminator:) 将会输出内容到“console”⾯板上。 separator 和 terminator 参 数具有默认值,因此你调用这个函
数的时候可以忽略它们。默认情况下,该函数通过添加换行符来结束当前⾏。如果不想换⾏,可以传递一个空字符串给
terminator 参数--例如, print(someValue, terminator:"") 。
Swift 用字符串插值(string interpolation)的方式把常量名或者变量名当做占位符加⼊到⻓字符串中,Swift 会用当前常量或变量
的值替换这些占位符。将常量或变量名放入圆括号中,并在开括号前使用反斜杠将其转义:
print("The current value of friendlyWelcome is \(friendlyWelcome)")
注释
请将你的代码中的非执⾏文本注释成提示或者笔记以⽅便你将来阅读。Swift 的编译器将会在编译代码时自动忽略掉注释部分。
Swift 中的注释与 C 语⾔的注释⾮常相似。单⾏注释以双正斜杠( // )作为起始标记:
// 这是⼀个注释
你也可以进⾏多⾏注释,其起始标记为单个正斜杠后跟随一个星号( /* ),终⽌标记为一个星号后跟随单个正斜杠 ( */ ):
/* 这也是一个注释,
但是是多⾏的 */
与 C 语⾔多⾏注释不同,Swift 的多⾏注释可以嵌套在其它的多⾏注释之中。你可以先生成一个多⾏注释块,然后在这个注释块
之中再嵌套成第⼆个多⾏注释。终⽌注释时先插⼊第⼆个注释块的终⽌标记,然后再插⼊第⼀个注释块的终止标记:
/* 这是第一个多⾏注释的开头
/* 这是第⼆个被嵌套的多⾏注释 */
这是第⼀个多⾏注释的结尾 */
通过运⽤嵌套多⾏注释,你可以快速⽅便的注释掉⼀⼤段代码,即使这段代码之中已经含有了多⾏注释块。
分号
Swift 并不强制要求你在每条语句的结尾处使用分号( ; )。有一种情况下必须要用分号,即你打算在同一⾏内写多条独⽴的语句:
let cat = "?"; print(cat)
// 输出 "?"
整数
整数就是没有小数部分的数字,比如 42 和 -23 。整数可以是有符号 (正、负、零)或者无符号 (正、零)。 Swift 提供了了8、16、
32和64位的有符号和无符号整数类型。这些整数类型和 C 语⾔的命名方式很像,比如8位无符号整数类型是 UInt8 ,32位有符号
整数类型是 Int32 。就像 Swift 的其他类型一样,整数类型采用大写命名法。
整数范围
你可以访问不同整数类型的 min 和 max 属性来获取对应类型的最小值和最大值:
let minValue = UInt8.min // minValue 为 0,是 UInt8 类型
let maxValue = UInt8.max // maxValue 为 255,是 UInt8 类型
Int
一般来说,你不需要专门指定整数的长度。Swift 提供了一个特殊的整数类型 Int ,长度与当前平台的原生字长相同:
- 在32位平台上, Int 和 Int32 长度相同。
- 在64位平台上, Int 和 Int64 长度相同。
除非你需要特定长度的整数,一般来说使用 Int 就够了。这可以提高代码一致性和可复用性。即使是在32位平台
上, Int 可以存储的整数范围也可以达到 -2,147,483,648 ~ 2,147,483,647 ,大多数时候这已经足够⼤了。
UInt
Swift 也提供了了一个特殊的无符号类型 UInt ,长度与当前平台的原⽣生字⻓长相同。
注意
尽量不要使用 UInt ,除非你真的需要存储一个和当前平台原生字长相同的无符号整数。除了这种情况,最好使用 Int ,即使你要
存储的值已知是非负的。统一使用 Int 可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断。
浮点数
浮点数是有小数部分的数字,比如 3.14159 、 0.1 和 -273.15 。
浮点类型比整数类型表示的范围更大,可以存储比 Int 类型更大或者更小的数字。Swift 提供了两种有符号浮点数类型:
Double 表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。
Float 表示32位浮点数。精度要求不高的话可以使用此类型。
注意
Double 精确度很高,⾄少有15位数字,⽽ Float 只有6位数字。选择哪个类型取决于你的代码需要处理的值的范围,在两
种类型都匹配的情况下,将优先选择 Double 。