Swift是蘋果的品牌新的編程語言,在2014年WWDC(蘋果開發(fā)者大會)上發(fā)布的編程語言。
隨著Swift語言的發(fā)布,蘋果也發(fā)布了一個出色的SWIFT的參考指南,這里強(qiáng)烈推薦。
但是這個學(xué)習(xí)指南又長又瘦!所以,如果沒有很多的時間,只是想快速學(xué)習(xí)Swift,那么本教程就是為你準(zhǔn)備的。
本 Swift 教程將需要大約25分鐘學(xué)習(xí),給出 Swift 語言一個快速瀏覽,包括變量,控制流,類等以及更多的最佳實(shí)踐。
對于本Swift教程,需要Xcode最新版本(在寫這篇Swift教程的時候使用的是Xcode 6.1.1)。學(xué)習(xí)本教程之前不需要任何Swift和Objective-C的經(jīng)驗(yàn),但如果有一些編程經(jīng)驗(yàn),但這會對理解和學(xué)習(xí)有幫助。
注意: 請確保有最新的Xcode(在Mac App Store檢查以確保)。Swift正在發(fā)生迅速的變化,我們正在竭盡所能為每一個測試版更新本教程; 代碼可能無法正常工作在舊版本的Xcode中的或預(yù)發(fā)行版本中。
啟動 Xcode 6, 并轉(zhuǎn)到 File\New\File. 選擇 iOS\Source\Playground, 并點(diǎn)擊 Next.
命名文件為 SwiftTutorial.playground, 并點(diǎn)擊 Create, 并保存在一個方便的地方. 刪除其它不用的文件,以保持一個干凈的文件目錄.
playground 是一種文件類型,并且允許測試 Swift 代碼, 可以側(cè)邊欄查看每一行的結(jié)果. 例如:添加以下行到 playground 中:
let tutorialTeam = 60 let editorialTeam = 17 let totalTeam = tutorialTeam + editorialTeam
當(dāng)編寫輸入這些行,會看到側(cè)邊欄上的每一行的結(jié)果。是不是很方便?
Playgrounds是學(xué)習(xí)Swift一個很好的方式(比如這個Swift教程)來試驗(yàn)新的API,原型代碼或算法,或可視化繪制代碼。 在本Swift教程的其余部分,將使用 playground。
通過這種方式,可以測試一些代碼,Swift使用此文件作為一個快速的暫存器。 當(dāng)然,對于這個工作,必須有playground在一個地方,不能隨便移動它。
嘗試添加下面一行到 playground 的底部:
totalTeam += 1
當(dāng)加入這一行,會發(fā)現(xiàn)有一個錯誤。 這是因?yàn)?totalTeam 是一個常數(shù),這意味著它的值永遠(yuǎn)不會改變。Swift中使用關(guān)鍵字 let 聲明常數(shù)。
如果想要 totalTeam 是一個變量,它的值可以隨時被改變 - 聲明它需要用不同的關(guān)鍵字: var。
要做到這一點(diǎn),初始化 totalTeam 使用以下行來替換之前的聲明:
var totalTeam = tutorialTeam + editorialTeam
現(xiàn)在它能正常工作了!可能就會像你自己認(rèn)為的那樣了,“為什么不使用var聲明一切呢,無需有那么多的限制?”
好吧,使用 let 來聲明一個常量是最好的做法,因?yàn)檫@允許編譯器進(jìn)行優(yōu)化。所以請記?。罕M可能使用 let
來聲明常量
!
到目前為止,還沒有明確設(shè)置這些常量和變量的類型,因?yàn)榫幾g器有足夠的信息來自動推斷出它。
例如,設(shè)置 tutorialTeam 為 56,編譯器知道56是一個int類型,所以它會自動設(shè)置oftutorialTeam類型為int。
但是,如果你想要也可以設(shè)置明確類型。嘗試通過設(shè)置tutorialTeam的類型如以下的行:
let tutorialTeam: Int = 60
如果不知道明確類型,或者讓編譯器推斷類型并自動設(shè)置。這是比較好的做法,可在自動情況下讓編譯器推斷出類型,因?yàn)檫@是 Swift 的主要優(yōu)勢之一:簡潔,易于代碼閱讀。
因?yàn)檫@個,切換回之前的那行使用推斷輸入(自動識別類型):
let tutorialTeam = 60
到目前為止,已經(jīng)看到了 Int 的解釋,這是Swift用于整數(shù)值類型的例子,但是還有更多。
嘗試使用一些基本類型,下面每個部分粘貼在 playground 的底部。
Floats 和 Doubles
let priceInferred = 19.99 let priceExplicit: Double = 19.99
有兩種類型的小數(shù)點(diǎn)值,如:Float 和 Double。Double有更多的精確度, 并且默認(rèn)是十進(jìn)制值。這意味著 priceInferred 是 Double 類型。
Bools
let onSaleInferred = true let onSaleExplicit: Bool = false
請注意,在 Swift 中使用 true/false 作為布爾值(在 Objective-C 中使用 YES/NO ,所以它們有點(diǎn)不同)。
Strings
let nameInferred = "Whoopie Cushion" let nameExplicit: String = "Whoopie Cushion"
字符串是如你所期望那樣,但請注意,不再像在 Objective-C 中使用 @ 符號了。
if語句和字符串插值
if onSaleInferred { println("\(nameInferred) on sale for \(priceInferred)!") } else { println("\(nameInferred) at regular price: \(priceInferred)!") }
這是一個if語句的一個例子,就像在其它的編程語言一樣。條件的括號是可選的,大括號是必需的,即使只有1行語句。
這里說明一個叫做字符串內(nèi)插的新的技術(shù)的一個例子。在Swift中每當(dāng)想要替換字符串中東西,只需使用此語法:\(表達(dá)式)。
在這一點(diǎn)上,可以看到在側(cè)邊欄中 println 的結(jié)果,由于空間有限它可能不好看到。要查看輸出,將鼠標(biāo)移動到該行,并單擊出現(xiàn)的眼珠子(圖標(biāo)):
還有一個可以看到輸出方法。去到Xcode的主菜單,然后選擇 View\Assistant Editor\Show Assistant Editor.
助理編輯器會告訴你的代碼中任何println語句的結(jié)果,并將結(jié)果值顯示在一個方便的地方,這往往比使用鼠標(biāo)放在每一行更容易。
這里是本教程到這里的 playground 文件 內(nèi)容。
在Swift開發(fā)中會創(chuàng)建類和方法,這是最常見的作法,讓我們來看看!
首先,刪除在playground文件的一切內(nèi)容,以便可以在一個干凈的文件中開始新的代碼編寫。
接下來,將創(chuàng)建一個小費(fèi)計算器類,以幫助描繪餐廳。 一次添加一小塊代碼,在這里將一步一步地解釋。
// 1 class TipCalculator { }
要創(chuàng)建一個類,只需在class關(guān)鍵字后輸入類的名稱。然后,類的主體使用一個大括號。
如果是繼承另一個類,使用一個 :符號,后面是繼承的類的名稱。請注意,不一定需要繼承(不像在Objective-C,在那里必須繼承NSObject 之類的東西或派生自NSObject)。
添加以下代碼在大括號內(nèi):
// 2 let total: Double let taxPct: Double let subtotal: Double
添加這些后會出現(xiàn)一些錯誤,但不用擔(dān)心,接下來很快就會解決這些問題。
這就是如何在一個類中創(chuàng)建屬性 – 和創(chuàng)建變量或常數(shù)的方式相同。在這里,將創(chuàng)建三個常量的屬性 – 一個是法案的總額(稅后), 一個用于應(yīng)用到法案的稅收比例,一個用于法案的小計(稅前)。
請注意,任何屬性當(dāng)聲明它們時,聲明必須為它們設(shè)置初始值,或者在初始化時 –這就是為什么當(dāng)前會有錯誤。如果不希望為屬性設(shè)置初始值,必須聲明它們作為可選(更多,在未來的教程)。
在之前創(chuàng)建的塊之后添加代碼(花括號內(nèi)):
// 3 init(total: Double, taxPct: Double) { self.total = total self.taxPct = taxPct subtotal = total / (taxPct + 1) }
這將為類創(chuàng)建一個初始化器并使用兩個參數(shù)。初始化器在 Swift 的名稱總是為 init – 但可以有多個(如果必要的話),可采用不同的參數(shù)。
請注意,這里已經(jīng)給這個方法使用了參數(shù),與這個類的屬性的名稱相同。正因?yàn)槿绱?,需要通過將自身前綴在屬性之前,以區(qū)分兩者
請注意,由于沒有 subtotal 屬性,所以不會有名稱沖突,不需要添加 self 關(guān)鍵字, 因?yàn)榫幾g器可以自動推斷。
(subtotal * taxPct) + subtotal = total subtotal * (taxPct + 1) =上一篇:Swift比較運(yùn)算下一篇:Swift 泛型