關於Swift
Swift是為IOS和OSX應用制定的新程式設計語言,吸取C和Objective-C語言的精粹,但不損失與C語言的相容性。Swift採用安全編程模型、加入了各種現代程式設計語言特性,使得該語言更易被掌握、更具擴充性,用起來更有趣。Swift語言的奠基石是已經成熟的、並為大家所喜愛的Cocoa和Cocoa Touch架構,新語言使大家可以盡情暢想新軟體開發的機遇。
Swift沉積了多年的研發成果,蘋果公司為提供高效Swift語言編譯器、調試器和基礎架構打下了堅實基礎。我們使用Automatic Reference Counting(ARC)技術簡化記憶體管理。我們的架構設計,建立在Cocoa穩固的基礎架構上。已經徹底完成了標準化和現代化的改進。Objective-C的改進支援了塊定義,集合文法、模組,使語言架構合理整合了現代語言技術。要感謝前人的基礎工作,使我們現在能夠向大家介紹蘋果公司未來的軟體開發語言。
對Objective-C開發人員來說,Swift是比較容易上手的,它採用和Objective-C類似的參數命名規則和強大的動態物件模型。它提供無縫的使用Cocoa架構和與Objective-C代碼混合即用的互操作特性。構建在這些基礎上,Swift語言帶來了許多新的特性、也重新整合了過程式語言和物件導向語言功能。
對新學習編程的人來說,Swift語言是門友好的語言。一門作為工業前沿的系統程式設計語言,Swift語言能夠象指令碼語言一樣易於表述和理解。它支援“playgrounds”技術,作為一項革新功能,開發人員可以使用它進行Swift的即時運行和直觀地看到結果,而不用從頭重新編譯運行程式。
Swift整合了現代電腦語言的智慧,匯入了蘋果公司軟體研發的精粹。Swift編譯器針對效能進行了最佳化,而語言本身也針對現有的開發環境進行了最佳化,功能和效能得到平衡和發展。它能夠設計小到“hello world”程式、大到作業系統層級的程式。所有這一切使swift語言對開發人員和蘋果公司來說都將更有吸引力。
使用Swift語言編寫iOS和OS X應用將非常愉悅,它將繼續發展新的語言特性、包含更多功能。我們對Swift的發展雄心勃勃,也迫不及待地將這個工具送給大家去使用、去創造。
Swift入門之旅
學習一門新的電腦語言,傳統來說都是從編寫一個在螢幕上列印“Hello world”的程式開始的。那在Swift,我們使用一句話來實現它:
println("Hello, world")
如果你編寫過C或者Objective-C語言,Swift中的這個文法看起來便很熟悉,這句話卻是一個完整的程式。你無須為了得到輸入/輸出或字串處理去匯入一個獨立的功能庫。編寫全域代碼通常用於程式的進入點。你不需要寫一個main函數,你也不需要為每個語句寫個逗號作為結尾。
這個入門之旅將給你足夠的資訊去開始編寫Swift代碼,你可以實現許多的編程任務。這個過程中如果你有些內容不理解也不要擔心,我們將在本書的其他章節細節處為您解釋。
批註:
為了更好的體驗開發,請在Xcode中使用playground編輯這個章節的代碼。Playgrounds允許你在一邊編輯代碼的同時看到代碼的即時運行結果。
簡單賦值:
用於你把一個常量和變數作為成變數。常量的值不必每次都傳給編譯器,但你必須提前賦個數值給它。就是說常量可以賦值一次而多處引用。
var myVariable = 42
myVariable = 50
let myConstant = 42
相同的類型才能進行常量和變數的賦值,但是,你不用每次都顯式地定義類型,編譯器可以自動判斷。建立常量或變數的時候順便賦值可以讓編譯器知道它屬於什麼類型。上面的例子,編譯器指定myVariable變數屬於整數類型,因為它用一個整數進行初始化。
如果初始值不能表達足夠的類型資訊(或沒有初始值),則在變數後面加一個冒號和指定的類型。
let implicitInteger = 70
let implicitDouble = 70.0
let explicitDouble: Double = 70
練習:
顯式建立一個值為4的浮點類型的常量
賦值不會自動隱式地變成另外一種類型,如果你需要把一個賦值變更到另外一種類型,你需要顯式地建立目標類型的執行個體。
let label = "The width is "
let width = 94
let widthLabel = label + String(width)
練習:
試著把最後一行的字串轉換聲明去掉,看看會出什麼錯誤?
這裡有更簡便的方法把數值包含在字串裡面:把數值寫在括弧裡面,把斜杠寫在括弧前面,樣本如下:
let apples = 3
let oranges = 5
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges) pieces of fruit."
實驗:
在字串中使用 \()包含一個浮點計算結果,同時也包含對某個人的名字和祝詞。
使用方括弧([])建立數組和字典,然後在方括弧中使用索引下標存取各元素的值。
var
shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[1] = "bottle of water"
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations"
我們使用初始化文法來建立空數組和字典
let emptyArray = String[]()
let emptyDictionary = Dictionary<String, Float>()
如果能推斷指定類型,你可以寫一個空數組[]和空字典[:]- 例如: 當你設定一個新給變數或傳值給函數的參數的時候。
shoppingList = [] // 購物和放置各種東西.
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/extra/