簡介:

什么是Swift
Swift是蘋果於2014年WWDC(蘋果開發者大會)發布的全新編程語言
Swift在天朝譯為“雨燕”,右上角的圖標就是它的LOGO
跟Objective-C一樣,可以用於開發iOS、Mac應用程序
蘋果從2010年7月開始設計Swift語言,耗時4年打造
Swift的語法特點
從它的語法中能看到Objective-C、JavaScript、Python等語言的影子
語法簡單、代碼簡潔、使用方便
可與Objective-C混合使用(相互調用)
為什么要設計Swift語言
讓應用開發更簡單、更快、更穩定
確保最終應用有着更好的質量
編程語言對比
腳本語言(比如Python)
通常易於編寫和測試,不需要經歷編譯-鏈接-運行三個繁瑣的步驟
但並不是非常強大,難以帶來高質量程序
如果你希望編寫一款游戲,完全利用設備的性能,那么這樣的語言並不理想
傳統編程語言(比如Objective-C)
使開發者能更好地利用設備的性能,開發更復雜的應用
但通常較難掌握,在編譯和測試時也更麻煩(經歷編譯-鏈接-運行三個步驟)
Swift
借鑒了Objective-C、JavaScript、Python等語言的優點
目標:簡單、高效、強大
相關數據
Xcode版本必須 >= 6.0,才能使用Swift進行調試和開發
Swift自從發布之后,備受開發者關注,1天的時間內
Xcode 6 beta下載量突破1400萬次
官方發布的電子書《The Swift Programming Language》下載量突破37萬次
一位國外開發者已經用Swift實現了Flappy Bird游戲(這位開發者上手Swift的時間只有4個小時,編程加上休息時間,接近9個小時)
語法須知
2個不需要
不需要編寫main函數:全局作用域中的代碼會被自動當做程序的入口點(從上往下執行)
不需要在每一條語句后面加上分號
let radius = 10
你喜歡的話,也可以加上 let radius = 10;
有一種情況必須加分號:同一行代碼上有多條語句時
let radius = 10; let radius2 = 15
注釋
單行注釋 // 這是單行注釋
多行注釋 /* 這是多行注釋 */
跟其他語言不太一樣的是,Swift的多行注釋可以嵌套多行注釋
/* haha /* hehe */ haha */
變量和常量
如何聲明常量和變量
用let來聲明常量
let radius = 10
用var來聲明變量
var age = 20
var x = 0.0, y = 0.0, z = 0.0
Swift不會自動給變量賦初始值
也就是說變量不會有默認值
所以要求使用變量之前必須要對其初始化
常量和變量的命名
基本上可以用任何你喜歡的字符作為常量和變量名
let π = 3.14159
let 網址 = "http://ios.itcast.cn"
let 🐶🐮 = "dogcow"
// 🐶和🐮是一種特殊的Unicode字符
常量和變量名的注意點
不能包含數學符號(比如 + 和 * )
不能包含箭頭(比如↑、↓、←、→)
不能包含非法無效的Unicode字符(比如⚽ 、♠)
不能是關鍵字(比如let、var)
不能包含橫線 – 、 制表符(比如 my–name)
不能以數字開頭(比如 123go)
不能是單獨一個下划線 _ (比如var _ = 10)
數據類型
Swift中常用的數據類型有
Int、Float、Double、Bool
String、Character、Array、Dictionary
可以看出,數據類型的首字母都是大寫的
如何指定變量\常量的數據類型
在常量\變量名后面加上“冒號:” 和 “類型名稱”
var age : Int = 10
上面代碼表示:定義了一個Int類型的變量age,初始值是10
一般來說,沒有必要明確指定變量\常量的類型
如果在聲明常量\變量時賦了初始值,Swift可以推斷出這個常量\變量的類型
var age = 20 // Swift會推斷出age是Int類型,因為20是個整數
整數
整數分為2種類型
有符號(signed):正、負、零
無符號(unsigned):正、零
Swift提供了8、16、32、64位的有符號和無符號整數,比如
UInt8 :8位無符號整型
Int32 :32位有符號整型
整數的最值
可以通過min和max屬性來獲取這個類型的最小值和最大值
let minValue = UInt8.min // UInt8 類型的 minValue 等於0
let maxValue = UInt8.max // UInt8 類型的 maxValue 等於255
int和uint
Swift提供了特殊的有符號整數類型Int和無符號整數類型UInt
Int\UInt的長度和當前系統平台一樣
在32位系統平台上,Int和UInt的長度是32位
在64位系統平台上,Int和UInt的長度是64位
Int在32位系統平台的取值范圍:-2147483648 ~ 2147483647
建議
在定義變量時,別總是在考慮有無符號、數據長度的問題
盡量使用Int,這樣可以保證代碼的簡潔、可復用性
-----------存儲范圍------------------------------------------------------
每種數據類型都有各自的存儲范圍
Int8的存儲范圍是:–128 ~ 127
UInt8的存儲范圍是:0 ~ 255
如果數值超過了存儲范圍,編譯器會直接報錯
下面的語句都會直接報錯
let num1 : UInt8 = -1 // UInt8不能存儲負數
let num2 : Int8 = Int8.max + 1 // Int8能存儲的最大值是Int8.max
-----------整數的表示形式------------------------------------------------
整數的4種表示形式
十進制數:沒有前綴
var i1 = 10 // 10
二進制數:以0b為前綴
var i2 = 0b1010 // 10
八進制數:以0o為前綴
var i3 = 0o12 // 10
十六進制數:以0x為前綴
var i4 = 0xA // 10
-----------類型別名------------------------------------------------
可以使用typealias關鍵字定義類型的別名,跟C語言的typedef作用類似
typealias MyInt = Int // 給Int類型起了個別名叫做MyInt
原類型名稱能用在什么地方,別名就能用在什么地方
聲明變量類型
var num : MyInt = 20
獲得類型的最值
var minValue = MyInt.min
類型轉換
var num2 = MyInt(3.14) // 3
-----------浮點數-----------------------------------------------
浮點數,就是小數。Swift提供了兩種浮點數類型
Double :64位浮點數,當浮點值非常大或需要非常精確時使用此類型
Float :32位浮點數,當浮點值不需要使用Double的時候使用此類型
精確程度
Double :至少15位小數
Float :至少6位小數
如果沒有明確說明類型,浮點數默認就是Double類型
let num = 0.14 // num是Double類型的常量
浮點數的表示形式
浮點數可以用 十進制 和 十六進制 2種進制來表示
十進制(沒有前綴)
沒有指數:var d1 = 12.5
有指數 :var d2 = 0.125e2
// 0.125e2 == 0.125 * 10²
²MeN == M * 10的N次方
十六進制(以0x為前綴,且一定要有指數)
var d3 = 0xC.8p0
// 0xC.8p0 == 0xC.8 * 2º == 12.5 * 1
²0xMpN == 0xM * 2的N次方
var d3 = 0xC.8p1
// 0xC.8p1 == 0xC.8 * 2¹ == 12.5 * 2 == 25.0