當我們學習一門語言的時候,無論是說還是寫,也無論是外語或者編程語言,我們都會用自己已經掌握的語言中的元素去理解新語言中對應的部分。學習Swift也一樣,作為一種編程語言,它有著和Objective-C,JavaScript或C#等其它編程語言共通的概念和類似的表達方式。如果你或多或少了解過一些編程語言,學習Swift將會是一個非常輕松的過程。
Playground
Playground是Apple在2014年WWDC發布Swift的時候,和XCode一起發布的用于實時調試Swift代碼的小工具。我們絕大部分講Swift語言本身的視頻,都會直接在Playground里完成。Playground會隨著我們編寫代碼實時為我們完成編譯,并自動為我們顯示每一行代碼的執行結果,無論是簡單語句,循環,甚至是各種UI,Playground都可以完美勝任,是我們理解Swift中各種語言特性的利器。
我們打開XCode,選擇Get started with a playground。



從定義一個變量開始
變量是編程語言中最常用的語法元素,它們用于在程序中把一個名字(例如:swiftString)和某種特定類型的值(例如:"Swift is fun.")關聯起來。
在Swift里,我們使用var關鍵字來定義各種不同類型的變量:
var Name = Value
例如,定義一些我們熟悉的基本類型變量:
//: #### Fundamental types
//: Integervar hours = 24
//: Doublevar PI = 3.14
//: Boolvar swiftIsFun = true
//: Stringvar boxue = "boxue.io"
除了這些基本類型之外,Swift還有一些自己特有的類型,例如:方便我們打包多個類型的Tuple
//: Tuple - Pack many types of values together
var me = ("Mars", 11, "11@boxue.io")
me.0
me.1
定義好一個Tuple之后,我們就可以使用示例代碼中,me.0,me.1這樣的方式來訪問Tuple中的成員了。我們也可以像下面這樣直接修改變量的值:
hours = 12
PI = 3.14159
如果我們不希望變量的值被修改,我們就需要定義一種特殊的變量。
常量是不能被修改的變量
定義常量的方法和變量類似,我們把關鍵字var,變成關鍵字let就可以了。例如:
let minutes = 30
let fireIsHot = true
一旦我們定義常量之后,就不能再修改常量的值了,否則,編譯器會告訴我們發生了錯誤。例如,我們修改常量fireIsHot:
fireIsHot = false
這時,我們就可以在Playground中直接看到一個編譯錯誤:
“只要程序中的變量值不會被修改,就總應該使用let來定義它。這不僅可以防止變量被意外修改,編譯器還可以針對常量做更多優化?!?
----最佳實踐
Type inference / annotation
在前面的例子里,我們可以發現,無論是整數、浮點數、字符串還有Tuple,我們都沒有明確的指定變量的類型,Swift編譯器會根據我們為變量的賦值自動推導變量的類型,這個特性,在Swift里叫做Type Inference。
但有時,我們定義變量的時候,并不能確定變量的初始值,這個時候,我們就必須像下面這樣明確告訴編譯器我們需要的變量類型:
var Name:Type
這種通過:Type指定變量類型的形式,在Swift中叫做Type annotation。例如:
var x: Int
var s: String
What's next?
在這一節中,我們定義了一些包含不同類型值的常量和變量,并了解了Swift如何根據它們的值自動推導它們的類型。這些內容是Swift中最基本的語言要素,在下一節中,我們會進一步了解其中的一類變量:如何在Swift中使用各種形式的數字。