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 。类型安全可以帮助你在开发阶段尽早发现并修正错误。
常量和变量
常量和变量把一个名字(比如 maximumNumberOfLoginAttempts 或者 welcomeMessage )和一个指定类型的值(比如数字 10 或者字符串 “Hello” )关联起来。常量的值一旦设定就不能改变,而变量的值可以随意更改。
声明常量和变量
用 let 来声明常量,用 var 来声明变量。
let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0
声明一个名字是 maximumNumberOfLoginAttempts de 新常量,并给它一个值 10。然后,声明一个 名字是 currentLoginAttempt 的变量并将它的值初始化为 0。
在这个例子中,允许的最大尝试登录次数被声明为一个常量,因为这个值不会改变。当前尝试登录次数被声明为一个变量,因为每次尝试登录失败的时候都需要增加这个值。
可以在1??行中声明多个常量或者变量,用逗号隔开:
var x = 0.0, y = 0.0, z = 0.0
类型标注
当你声明常量或者变量的时候可以加上类型标注(type annotation),说明常量或者变量中要存储的值的类型。如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。
var welcomeMessage: String
这个变量只能存储 String 类型的值。
声明中的冒号代表着 "是...类型",所以这行代码可以理解为:
“声明一个类型是 String,名字是 welcomeMessage 的变量。”
“类型是 String ” 的意思是 “可以存储任意 String 类型的值。”
welcomeMessage 变量现在可以被设置成任意字符串:
welcomeMessage = "Hello"
你可以在一行中定义多个同样类型的变量,用逗号隔开,并在最后一个变量名之后添加类型标注。
var red, green, blue: Double
注意:
一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,swift 可以推断出这个常量或者变量的类型。在上面的例子中,没有给 welcomeMessage 赋初始值,所以变量 welcomeMessage 的类型是通过一个类型标注指定的,而不是通过初始值推断的。