Swift傻傻分不清楚系列(一)常量与变量
菜鳥從零開始認識學習Swift。感謝大神們翻譯的文檔。搬到自己小黑屋里慢慢看~~~
本頁包含內容:
- 常量和變量
- 聲明常量和變量
- 類型標注
- 常量和變量的命名
- 輸出常量和變量
- 注釋
- 分號
Swift 是一門開發(fā) iOS, OS X 和 watchOS 應用的新語言。然而,如果你有 C 或者 Objective-C 開發(fā)經驗的話,你會發(fā)現(xiàn) Swift 的很多內容都是你熟悉的。
Swift 包含了 C 和 Objective-C 上所有基礎數(shù)據類型,Int表示整型值;Double和Float表示浮點型值;Bool是布爾型值;String是文本型數(shù)據。Swift 還提供了三個基本的集合類型,Array,Set和Dictionary,詳見集合類型。
就像 C 語言一樣,Swift 使用變量來進行存儲并通過變量名來關聯(lián)值。在 Swift 中,廣泛的使用著值不可變的變量,它們就是常量,而且比 C 語言的常量更強大。在 Swift 中,如果你要處理的值不需要改變,那使用常量可以讓你的代碼更加安全并且更清晰地表達你的意圖。
除了我們熟悉的類型,Swift 還增加了 Objective-C 中沒有的高階數(shù)據類型比如元組(Tuple)。元組可以讓你創(chuàng)建或者傳遞一組數(shù)據,比如作為函數(shù)的返回值時,你可以用一個元組可以返回多個值。
Swift 還增加了可選(Optional)類型,用于處理值缺失的情況。可選表示“那兒有一個值,并且它等于 x ”或者“那兒沒有值”。可選有點像在 Objective-C 中使用nil,但是它可以用在任何類型上,不僅僅是類。可選類型比 Objective-C 中的nil指針更加安全也更具表現(xiàn)力,它是 Swift 許多強大特性的重要組成部分。
Swift 是一門類型安全的語言,可選類型就是一個很好的例子。Swift 可以讓你清楚地知道值的類型。如果你的代碼期望得到一個String,類型安全會阻止你不小心傳入一個Int。你可以在開發(fā)階段盡早發(fā)現(xiàn)并修正錯誤。
常量和變量
常量和變量把一個名字(比如maximumNumberOfLoginAttempts或者welcomeMessage)和一個指定類型的值(比如數(shù)字10或者字符串"Hello")關聯(lián)起來。常量的值一旦設定就不能改變,而變量的值可以隨意更改。
聲明常量和變量
常量和變量必須在使用前聲明,用let來聲明常量,用var來聲明變量。下面的例子展示了如何用常量和變量來記錄用戶嘗試登錄的次數(shù):
let maximumNumberOfLoginAttempts = 10 var currentLoginAttempt = 0這兩行代碼可以被理解為:
“聲明一個名字是maximumNumberOfLoginAttempts的新常量,并給它一個值10。然后,聲明一個名字是currentLoginAttempt的變量并將它的值初始化為0。”
在這個例子中,允許的最大嘗試登錄次數(shù)被聲明為一個常量,因為這個值不會改變。當前嘗試登錄次數(shù)被聲明為一個變量,因為每次嘗試登錄失敗的時候都需要增加這個值。
你可以在一行中聲明多個常量或者多個變量,用逗號隔開:
var x = 0.0, y = 0.0, z = 0.0注意:
如果你的代碼中有不需要改變的值,請使用let關鍵字將它聲明為常量。只將需要改變的值聲明為變量。
類型標注
當你聲明常量或者變量的時候可以加上類型標注(type annotation),說明常量或者變量中要存儲的值的類型。如果要添加類型標注,需要在常量或者變量名后面加上一個冒號和空格,然后加上類型名稱。
這個例子給welcomeMessage變量添加了類型標注,表示這個變量可以存儲String類型的值:
var welcomeMessage: String聲明中的冒號代表著“是...類型”,所以這行代碼可以被理解為:
“聲明一個類型為String,名字為welcomeMessage的變量。”
“類型為String”的意思是“可以存儲任意String類型的值。”
welcomeMessage變量現(xiàn)在可以被設置成任意字符串:
welcomeMessage = "Hello"你可以在一行中定義多個同樣類型的變量,用逗號分割,并在最后一個變量名之后添加類型標注:
var red, green, blue: Double注意:
一般來說你很少需要寫類型標注。如果你在聲明常量或者變量的時候賦了一個初始值,Swift可以推斷出這個常量或者變量的類型,請參考類型安全和類型推斷。在上面的例子中,沒有給welcomeMessage賦初始值,所以變量welcomeMessage的類型是通過一個類型標注指定的,而不是通過初始值推斷的。
常量和變量的命名
你可以用任何你喜歡的字符作為常量和變量名,包括 Unicode 字符:
常量與變量名不能包含數(shù)學符號,箭頭,保留的(或者非法的)Unicode 碼位,連線與制表符。也不能以數(shù)字開頭,但是可以在常量與變量名的其他地方包含數(shù)字。
一旦你將常量或者變量聲明為確定的類型,你就不能使用相同的名字再次進行聲明,或者改變其存儲的值的類型。同時,你也不能將常量與變量進行互轉。
注意:
如果你需要使用與Swift保留關鍵字相同的名稱作為常量或者變量名,你可以使用反引號(`)將關鍵字包圍的方式將其作為名字使用。無論如何,你應當避免使用關鍵字作為常量或變量名,除非你別無選擇。
你可以更改現(xiàn)有的變量值為其他同類型的值,在下面的例子中,friendlyWelcome的值從"Hello!"改為了"Bonjour!":
var friendlyWelcome = "Hello!" friendlyWelcome = "Bonjour!" // friendlyWelcome 現(xiàn)在是 "Bonjour!"與變量不同,常量的值一旦被確定就不能更改了。嘗試這樣做會導致編譯時報錯:
let languageName = "Swift" languageName = "Swift++" // 這會報編譯時錯誤 - languageName 不可改變輸出常量和變量
你可以用print(_:separator:terminator:)函數(shù)來輸出當前常量或變量的值:
print(friendlyWelcome) // 輸出 "Bonjour!"print(_:separator:terminator:)是一個用來輸出一個或多個值到適當輸出區(qū)的全局函數(shù)。如果你用 Xcode,print(_:separator:terminator:)將會輸出內容到“console”面板上。separator和terminator參數(shù)具有默認值,因此你調用這個函數(shù)的時候可以忽略它們。默認情況下,該函數(shù)通過添加換行符來結束當前行。如果不想換行,可以傳遞一個空字符串給terminator參數(shù)--例如,print(someValue, terminator:"")。關于參數(shù)默認值的更多信息,請參考默認參數(shù)值。
Swift 用字符串插值(string interpolation)的方式把常量名或者變量名當做占位符加入到長字符串中,Swift 會用當前常量或變量的值替換這些占位符。將常量或變量名放入圓括號中,并在開括號前使用反斜杠將其轉義:
print("The current value of friendlyWelcome is \(friendlyWelcome)") // 輸出 "The current value of friendlyWelcome is Bonjour!注釋
請將你的代碼中的非執(zhí)行文本注釋成提示或者筆記以方便你將來閱讀。Swift 的編譯器將會在編譯代碼時自動忽略掉注釋部分。
Swift 中的注釋與 C 語言的注釋非常相似。單行注釋以雙正斜杠(//)作為起始標記:
// 這是一個注釋你也可以進行多行注釋,其起始標記為單個正斜杠后跟隨一個星號(/*),終止標記為一個星號后跟隨單個正斜杠(*/):
/* 這是一個, 多行注釋 */與 C 語言多行注釋不同,Swift 的多行注釋可以嵌套在其它的多行注釋之中。你可以先生成一個多行注釋塊,然后在這個注釋塊之中再嵌套成第二個多行注釋。終止注釋時先插入第二個注釋塊的終止標記,然后再插入第一個注釋塊的終止標記:
/* 這是第一個多行注釋的開頭 /* 這是第二個被嵌套的多行注釋 */ 這是第一個多行注釋的結尾 */通過運用嵌套多行注釋,你可以快速方便的注釋掉一大段代碼,即使這段代碼之中已經含有了多行注釋塊。
分號
與其他大部分編程語言不同,Swift 并不強制要求你在每條語句的結尾處使用分號(;),當然,你也可以按照你自己的習慣添加分號。有一種情況下必須要用分號,即你打算在同一行內寫多條獨立的語句:
總結
以上是生活随笔為你收集整理的Swift傻傻分不清楚系列(一)常量与变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS NSMutableAttribu
- 下一篇: Swift傻傻分不清楚系列(二)数据类型