1. 程式人生 > >Swift基礎學習(一)基本語法

Swift基礎學習(一)基本語法

postfix 合數 語言特性 初學者 表達式 public 能夠 dict 命名

  Swift 簡介(贊美一番,收集了多篇 關於Swift 學習教程的語言簡介一直以為英語和漢語混寫的時候只是英語字母結尾的地方打空格,原來是英語字母的開頭和結尾都要加一個空格,英語字母後面是標點符號的時候不加空格):

  Swift 是一種新的編程語言,用於編寫 iOS,macOS,watchOS 和 tvOS 的應用程序。Swift 結合了 C 和 Objective-C 的優點並且不受 C 兼容性的限制。Swift 采用安全的編程模式並添加了很多新特性,這將使編程更簡單,更靈活,也更有趣。Swift 是基於成熟而且倍受喜愛的 Cocoa 和 Cocoa Touch 框架,它的降臨將重新定義軟件開發。

  Swift 的開發從很久之前就開始了。為了給 Swift 打好基礎,蘋果公司改進了編譯器,調試器和框架結構。我們使用自動引用計數(Automatic Reference Counting, ARC)來簡化內存管理。我們在 Foundation 和 Cocoa 的基礎上構建框架棧使其完全現代化和標準化。 Objective-C 本身支持塊、集合語法和模塊,所以框架可以輕松支持現代編程語言技術。正是得益於這些基礎工作,我們現在才能發布這樣一個用於未來蘋果軟件開發的新語言。

  Objective-C 開發者對 Swift 並不會感到陌生。它采用了 Objective-C 的命名參數以及動態對象模型,可以無縫對接到現有的 Cocoa 框架,並且可以兼容 Objective-C 代碼。在此基礎之上,Swift 還有許多新特性並且支持過程式編程和面向對象編程。

  Swift 對於初學者來說也很友好。它是第一個既滿足工業標準又像腳本語言一樣充滿表現力和趣味的系統編程語言。它支持代碼預覽(playgrounds),這個革命性的特性可以允許程序員在不編譯和運行應用程序的前提下運行 Swift 代碼並實時查看結果。Playground 會隨著我們編寫代碼實時為我們完成編譯,並自動為我們顯示每一行代碼的執行結果,無論是簡單語句,循環,甚至是各種UI,Playground 都可以完美勝任,是我們理解 Swift 中各種語言特性的利器。我們的學習過程的編碼基本都在 playgrounds 下進行,大大提高的我們學習的效率,所寫即所見。

  Swift 將現代編程語言的精華和蘋果工程師文化的智慧結合了起來。編譯器對性能進行了優化,編程語言對開發進行了優化,兩者互不幹擾,魚與熊掌兼得。Swift 既可以用於開發 “hello, world” 這樣的小程序,也可以用於開發一套完整的操作系統。所有的這些特性讓 Swift 對於開發者和蘋果來說都是一項值得的投資。

  Swift 是編寫 iOS,macOS,watchOS 和 tvOS 應用的極佳手段,並將伴隨著新的特性和功能持續演進。

  Swift 提供了 C 和 Objective-C 的所有基礎數據類型,包含整數 Int,浮點數 Double、Float,布爾值 Bool 以及 String 字符串(String 類型已經不再是字符數組,在 Swift 裏面 String 不是集合類型,在 Swift 裏面字符串做了很大的優化)。同時 Swift 也提供了兩種強大的集合數據類型,包括 Array(數組)和Dictionary(字典)。除了熟悉的類型,Swift 介紹了 Objective-C 中無法實現的高級類型。這些包括元組,從而能夠創建和傳遞值分組。元組可以從一個函數作為一個單一的復合值返回多個值。

  和 C 一樣,Swift 使用變量來儲存和訪問數值。Swift也支持數值不能改變的變量,這在C中我們稱為常量,但在 Swift 中常量將會更加強大。當變量值不需要改變的時候,可以使用常量,這會使得代碼更加安全和簡潔。

  另外,Swift引入了在Objective-C中沒有的一些高級數據類型,例如tuples(元組),可以使你創建和傳遞一組數值。

  Swift 還引入了可選項類型(Optionals),用於處理變量值不存在的情況。可選項的意思有兩種:一是變量是存在的,例如等於 X,二是變量值根本不存在。Optionals 類似於 Objective-C 中指向 nil 的指針,但是適用於所有的數據類型,而非僅僅局限於類,Optionals 相比於 Objective-C 中 nil 指針更加安全和簡明,並且也是 Swift 諸多最強大功能的核心。

  Swift 是一門類型安全的語言,Optionals 就是代表。Swift 能幫助你在類型安全的環境下工作,如果你的代碼中需要使用 String 類型,Swift 的安全機制能阻止你錯誤的將 Int 值傳遞過來,這使你在開發階段就能及時發現並修正問題。

  Hello, world!

  在屏幕上打印"Hello, world!",在 Swift 裏面可以用一行代碼實現:

1  print("Hello, world!")
1 NSLog("Hello, world!")

  寫過 C 和 OC 代碼的打印"Hello, world!",對這種形式應該特別熟悉,在 Swift 中,這行代碼就是一個完整的程序。不需要為了輸入輸出或者字符串處理導入一個單獨的庫,全局作用域中的代碼會被自動當做程序的入口點,所以也不需要 main() 函數。

  Swift:分號的使用

  swift 中每一行獨立代碼的末尾都不再需要加分號,如果是多個語句在同一行內書寫時要用分號把它們隔開。

1 // 第一個語句是定義一個變量 Str,並賦初始值是"Hello, playground",後面是四個打印語句,中間用分號隔開(此時在最後一個 NSLog 後面加分號不加分號都可以)
2 var str = "Hello, playground"; print(str); print(str); NSLog(str); NSLog("xxx\(str)")

  Swift:引入

  使用 import 語句來引入任何的 Objective-C 框架(或 C 庫)到 Swift 程序中。例如 import cocoa 語句導入了使用了 Cocoa 庫和 API,我們可以在 Swift 程序中使用他們。

  Cocoa 本身由 Objective-C 語言寫成,Objective-C 又是 C 語言的嚴格超集,所以在 Swift 應用中我們可以很簡單的混入 C 語言代碼,甚至是 C++ 代碼。

1 import UIKit // 引入UIKit 框架
2 import Foundation // 引入Foundation 框架
3 import ImageIO // 引入ImageIO 

  Swift:註釋

  兩個反斜杠開頭是單行註釋,OC 和 Swift 保持不變:

1 // 這是單行註釋

  三個反斜杠是標記註釋寫法之一,OC 和 Swift 保持不變:

1 /// 標記註釋
1     /// 測試標記註釋
2     ///
3     /// - Parameter person: 人數
4     /// - Returns: HML
5     func test(person: Int) -> String {
6         print(person)
7         return "HML"
8     }

  標記註釋用法如下:

技術分享

  另外一種標記註釋的寫法是,以/** 開頭以*/ 結尾,中間包裹標記註釋的內容,標記註釋多用來標記函數的用途,以及屬性的所代表的含義。

1 /**
2  標記註釋的內容
3  */

  多行註釋以 /* 開頭以 */ 結尾,中間包裹註釋的內容:

1 /*
2  這是一個多行註釋
3  */

  與 OC 不同的是,Swift 可以在多行註釋裏面嵌套其它多行註釋,OC 是直接報錯的。寫法是在一個多行註釋塊內插入另一個多行註釋,第二個註釋塊封閉時,後面仍然接著第一個註釋塊。

1         /*
2          第一個多行註釋開頭
3          /*
4          第二個多行註釋在裏面嵌套
5          */
6          第二個多行註釋結尾
7          */

  Swift:標識符

  和其它語言一樣,標識符就是給變量、常量、方法、函數、枚舉、結構體、類、協議、閉包等命名的名字,構成標識符的字符串有一定的規則,在Swift 裏面規則如下:

  1.字母區分大小寫,如 "str" 和 "Str" 是兩個不同的標識符。

  2.標識符的首個字符可以是字母或者下劃線,且只能以字母或者下劃線開頭。

  3.標識符裏面只能有字母、數字、下劃線組成,不能包含符號,如"~!@#$%^&*()..." 都不能出現

  註意: Swift 裏面的字符都是采用的Unicode 編碼,Unicode 叫做統一編碼制,它包含了亞洲文字編碼,如中文、日文、韓文等字符,還包含emoji 表情,所以變量我們甚至可以用漢字和emoji 表情來命名。如果一定要使用關鍵字作為標識符,可以在關鍵字前後添加重音符號(‘)。

1 var 漢字 = "HML"
2 print("\(漢字)")
3 
4 var ??????????? = "family"
5 print("\(???????????)")

  Swift:關鍵字

  關鍵字是類似於標識符命名規則的系統保留的字符序列,即關鍵字是對編譯器具有特殊意義的預定義保留標識符。

  例如:

  與聲明有關的關鍵字:class、func、let、public、typealias、deinit、import、operator、static、var、enum、init、private、struct、extension、internal、protocol、subscript

  與語句有關的關鍵字:break、do、if、where、case、else、in、while、continue、fallthrough、return、default、for、switch

  表達式和類型關鍵字:as、nil、true、_LINE_、dynamicType、self、_COLUMN_、false、Self、_FILE_、is、super、_FUNCTION_

  在特定上下文中使用的關鍵字:associativity、final、lazy、nonmutating、precedence、right、weak、convenience、get、left、optional、prefix、set、willSet、dynamic、infix、mutating、override、Protocol、Type、didSet、inout、none、postfix、required、unowned

  Swift:空格

  Swift 對空格的使用有一定的要求。

  1.運算符不能直接跟在變量或者常量的後面。

  a 與 = 連在一起的時候:

技術分享

  1 與 + 連在一起的時候:

技術分享

  提示讓在加號後面插入一個分隔符,這是因為Swift 以為1+ 這個語句結束了,而 2 是下一個語句,所以中間要插入一個分隔符號。

1 let b = 1 + 2 // 這是規範推薦使用的寫法
2 let c = 3+4 // 這樣也是可以的

  

  Swift:字面量

  字面量,就是指特定的數字、字符串或者布爾值這樣,能夠直接了當的指出自己的類型並為變量進行賦值的值。

1 42 // 整形字面量
2 3.1415926 // 浮點型字面量
3 "Hello, worle!" // 字符串字面量
4 true // 布爾型字面量

  好了,基本語法先寫這麽多,後面用到的時候再一步一步的詳細學習。

參考鏈接:https://www.boxueio.com/category/swift

http://blog.csdn.net/column/details/swiftmaster.html

http://www.runoob.com/swift/swift-basic-syntax.html

http://c.biancheng.net/cpp/html/2424.html

http://www.yiibai.com/swift/swift_quick_guide.html

http://blog.csdn.net/woaifen3344/article/details/49509095

http://www.swift51.com/swift3.0/chapter1/01_swift.html

END

Swift基礎學習(一)基本語法