1.常量和變量
- 常量和變量必須在使用前聲明,用let來聲明常量,用var來聲明變量。常量的值一旦設定就不能改變,而變量的值可以随意更改。
- Swift 不強制要求在每條語句的結尾處使用分号(;),當然,也可以按照自己的習慣添加分号。有一種情況下必須要用分号,即在同一行内寫多條獨立的語句。
//聲明常量
let maximumNumberOfLoginAttempts = 10;
//聲明變量
var currentLoginAttempt = 0;
//maximumNumberOfLoginAttempts = 11; //錯誤:常量賦初值後不能修改
currentLoginAttempt = 11; //正确
2.類型标注
- 當聲明常量或者變量的時候可以加上類型标注,說明常量或者變量中要存儲的值的類型。如果要添加類型标注,需要在常量或者變量名後面加上一個冒号和空格,然後加上類型名稱(空格不是必須的)。聲明中的冒号代表着“是...類型”.
- 一般來說很少需要寫類型标注。如果在聲明常量或者變量的時候賦了一個初始值,Swift可以推斷出這個常量或者變量的類型。
- 如果沒有給常量/變量初始值,那麼需要寫類型标注。
let welcomeMessage: String; //加了類型标注
welcomeMessage = "Hello";
let hello = "Hello"; //可以不加類型标注
3.輸出常量和變量
- Swift 用字元串插值的方式把常量名或者變量名當做占位符加入到長字元串中,Swift 會用目前常量或變量的值替換這些占位符。将常量或變量名放入圓括号中,并在開括号前使用反斜杠将其轉義。
var friendlyWelcome: String = "Hello";
print("The current value of friendlyWelcome is \(friendlyWelcome)");
4.注釋
- 單行注釋://
- 多行注釋:/**/
- 代碼分段(類似于OC中的 #pragma mark - ):// MARK: - (會有一個分割線)和 //TODO:
5.類型别名
- 類型别名就是給現有類型定義另一個名字。可以使用typealias關鍵字來定義類型别名。
typealias AudioSample = UInt16;
var maxAmplitudeFound = AudioSample.min;
【說明】:類型别名在實際項目開發中比較常用,例如定義閉包類型等。
6.整數和浮點數
- Swift 提供了8,16,32和64位的有符号和無符号整數類型。這些整數類型和 C 語言的命名方式很像,比如8位無符号整數類型是UInt8,32位有符号整數類型是Int32。
- Swift 提供了一個特殊的整數類型Int,長度與目前平台的原生字長相同:在32位平台上,Int和Int32長度相同;在64位平台上,Int和Int64長度相同。
- Swift 也提供了一個特殊的無符号類型UInt,長度與目前平台的原生字長相同:在32位平台上,UInt和UInt32長度相同。在64位平台上,UInt和UInt64長度相同。
- Double表示64位浮點數。當需要存儲很大或者很高精度的浮點數時請使用此類型。
- Float表示32位浮點數。精度要求不高的話可以使用此類型。
7.數值型類型轉換
- 類型轉換使用SomeType(ofInitialValue)格式。
let twoThousand: UInt16 = 2000;
let one: UInt8 = 1;
let twoThousandAndOne = twoThousand + UInt16(one);
8.布爾值
- Swift 有兩個布爾常量,true和false
9.元組
- 元組把多個值組合成一個複合值。元組内的值可以是任意類型,并不要求是相同類型。
let http404Error = (404, "Not Found");
http404Error.0; //404
let (statusCode, statusMessage) = (404, "Not Found");
statusCode; //404
let http200Status = (statusCode: 200, description: "OK");
http200Status.statusCode; //200
http200Status.0; //200
10.可選類型
- 可選類型用來處理值可能缺失的情況。可選類型表示:有值(等于 x)或者沒有值.
let possibleNumber = "11";
//因為該構造器可能會失敗,是以它傳回一個可選類型(optional)Int,而不是一個Int。一個可選的Int被寫作Int?而不是Int。問号暗示包含的值是可選類型,也就是說可能包含Int值也可能不包含值。
let convertedNumber = Int(possibleNumber);
11.可選綁定
- 使用可選綁定來判斷可選類型是否包含值,如果包含就把值賦給一個臨時常量或者變量。可選綁定可以用在if和while語句中,這條語句不僅可以用來判斷可選類型中是否有值,同時可以将可選類型中的值賦給一個常量或者變量。
let possibleNumber = "11";
if let actualNumber = Int(possibleNumber)
{
print("\'\(possibleNumber)\' has an integer value of \(actualNumber)");
}
else
{
print("\'\(possibleNumber)\' could not be converted to an integer");
}
【說明】:可選綁定功能在實際項目中經常應用,如結合泛型的應用,示例如下:
//imageName是泛型
if let image = imageName as? String
{
imageView.image = gof_ImageWithName(image);
}
else if let image = imageName as? UIImage
{
imageView.image = image;
}
12.隐式解析可選類型
- 可選類型暗示了常量或者變量可以“沒有值”。有時候在程式架構中,第一次被指派之後,可以确定一個可選類型總會有值。在這種情況下,每次都要判斷和解析可選值是非常低效的,因為可以确定它總會有值。
- 這種類型的可選狀态被定義為隐式解析可選類型。把想要用作可選的類型的後面的問号(String?)改成感歎号(String!)來聲明一個隐式解析可選類型。
var assumedString: String! = nil;
assumedString = "An implicitly unwrapped optional string.";
let implicitString: String = assumedString;
13.nil
- Swift 的
和 Objective-C 中的nil
并不一樣。在 Objective-C 中,nil
是一個指向不存在對象的指針。在 Swift 中,nil
不是指針——它是一個确定的值,用來表示值缺失。任何類型的可選狀态都可以被設定為nil
,不隻是對象類型。nil
無善無惡心之體,
有善有惡意之動,
知善知惡是良知,
為善去惡是格物。