Swift學(xué)習(xí)-基礎(chǔ)篇之常量和變量

關(guān)于Swift

Swift 是一種新的編程語(yǔ)言,主要用于IOS 和 Mac OS X 應(yīng)用程序的開(kāi)發(fā)。盡管如此,Swift 的許多部分和 C 和 Objective - C 語(yǔ)言類(lèi)似。

Swift 提供自己的語(yǔ)言類(lèi)型版本,所有的都是基于 C 和 Objective - C 的基本類(lèi)型,包括 Int、Double 、 Float 、Bool、String 。Swift還提供了強(qiáng)大的兩個(gè)集合類(lèi)型版本:Array 和 Dictionary 。

像 C 語(yǔ)言一樣,Swift 通過(guò)變量來(lái)存儲(chǔ)和通過(guò)明確的變量名來(lái)關(guān)聯(lián)值。Swift 還大量的變量的值不能被改變,這些被稱(chēng)為常量,而且比 C 語(yǔ)言更強(qiáng)大。在 Swift 中,常量的使用會(huì)使代碼更安全、所要表達(dá)的意圖更清晰。

除了熟悉的類(lèi)型,Swift 引入了在 Objective - C中沒(méi)有的更先進(jìn)的類(lèi)型。比如元組,通過(guò)元組,您能夠創(chuàng)建和傳遞一組值。在作為函數(shù)的返回值時(shí),通過(guò)元組可以返回多個(gè)值。

Swift 也引入了可選(Optional)類(lèi)型,用于處理缺失值的情況。可選(Optional)類(lèi)型表示:“有一個(gè)值,它等于x” 或 “沒(méi)有值”。可選(Optional)類(lèi)型類(lèi)似于在 Objective - C 中使用 nil ,但它可用于任何類(lèi)型,不僅僅是類(lèi)。相比于 Objective - C中的 nil ,可選(Optional)類(lèi)型更加安全,更具表現(xiàn)力。是 Swift 許多最強(qiáng)大功能的重要組成部分。

事實(shí)上,Swift是一種更安全的語(yǔ)言,可選(Optional)就是一個(gè)例子。Swift 可以幫助你認(rèn)清代碼中值的類(lèi)型。如果你的代碼的預(yù)期一個(gè)字符串,類(lèi)型安全會(huì)防止你誤入一個(gè)Int。這可以使您在開(kāi)發(fā)過(guò)程能夠盡早捕獲并修復(fù)錯(cuò)誤。

常量和變量

常量和變量把一個(gè)名稱(chēng)(如 maximumNumberOfLoginAttempts 或 welcomeMessage )與某一特定類(lèi)型的值(比如 10 或 “Hello” )關(guān)聯(lián)起來(lái)。 常量的值一旦設(shè)置不能改變,而一個(gè)變量可以設(shè)置為不同的值。

聲明常量和變量

常量和變量必須在使用之前聲明。用 let 關(guān)鍵字聲明常量,用 var 關(guān)鍵字聲明變量。下面是一個(gè)示例,如何使用常量和變量來(lái)統(tǒng)計(jì)用戶嘗試登錄的次數(shù)。

let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0

這段代碼可以理解為:
“聲明一個(gè)名稱(chēng)為 maximumNumberOfLoginAttempts 的常量,并初始化值 10 。 聲明一個(gè)名稱(chēng)為 currentLoginAttempt 的變量,并初始化值為 0。”
在這個(gè)例子中,允許的最大嘗試登錄次數(shù)被聲明為一個(gè)常量,因?yàn)樽畲笾挡粫?huì)改變。當(dāng)前的登錄嘗試計(jì)數(shù)器被聲明為一個(gè)變量,因?yàn)檫@個(gè)值在登錄失敗后必須增加。

您可以在一行中聲明多個(gè)常量或多個(gè)變量,由逗號(hào)分隔:

var x = 0.0, y = 0.0, z = 0.0

注意:如果在代碼中存儲(chǔ)的值不會(huì)改變,就用 let 關(guān)鍵字聲明這是一個(gè)常量。變量用于存儲(chǔ)需要改變的值。

類(lèi)型標(biāo)注

您可以為常量或變量添加類(lèi)型標(biāo)注(type annotation),這樣就清楚常量或變量可以存儲(chǔ)的值的類(lèi)型。添加類(lèi)型標(biāo)注的方法是:在常量或變量名后加冒號(hào),再加一個(gè)空格,最后是類(lèi)型的名稱(chēng)。
這個(gè)示例給變量 welcomeMessage 加了一個(gè)類(lèi)型標(biāo)注,表明它只可以存儲(chǔ) String 類(lèi)型的值。

var welcomeMessage: String

“冒號(hào)” 意味著“是...類(lèi)型”,所以上面的代碼可以解讀為:
“聲明一個(gè)名稱(chēng)為welcomeMessage的變量,是String類(lèi)型的。”
“是String類(lèi)型的”這個(gè)短語(yǔ)的意思是“可以存儲(chǔ)任何字符串值。”

welcomeMessage 現(xiàn)在可以存儲(chǔ)任何字符串值。

welcomeMessage = "Hello"

注意:一般來(lái)說(shuō)很少需要寫(xiě)類(lèi)型標(biāo)注。在聲明常量或者變量的時(shí)候賦了一個(gè)初始值,Swift可以推斷出這個(gè)常量或者變量的類(lèi)型。

命名常量和變量

你可以使用任何字符命名常量和變量名,包括Unicode。

let n = 3.14159
let 你好 = "你好世界"
let □ □ = "dogcow"

常量與變量名不能包含數(shù)學(xué)符號(hào)、箭頭、保留的(或者非法的)Unicode 碼、連線與制表符。不能以數(shù)字開(kāi)頭,但是可以在變量名的其他地方包含數(shù)字。

一旦命名了某種類(lèi)型為常量或變量,就不能再用相同名稱(chēng)重復(fù)命名,不能改變它存儲(chǔ)值的類(lèi)型,也不能改變一個(gè)常量為變量或改變一個(gè)變量為常量。
注意:如果你需要命名一個(gè)常量或變量名稱(chēng)為保留關(guān)鍵字,你可以使用反引號(hào)(‘)包括關(guān)鍵字作為變量名稱(chēng)。當(dāng)然,最好避免使用關(guān)鍵字作為名稱(chēng),除非別無(wú)選擇。

可以改變變量的值為另一個(gè)相同類(lèi)型的值。在下面的例子中,friendlyWelcome 的值從“Hello!”改為“Bonjour!”。

var friendlyWelcome = "Hello! "
friendlyWelcome = "Bonjour! "
// friendlyWelcome is now "Bonjour! "

不同于變量,常量的值是不能改變的。如果試圖改變,那么編譯器將報(bào)告一個(gè)錯(cuò)誤:

let languageName = "Swift"
languageName = "Swift++"
// this is a compile-time error - languageName cannot be changed

打印常量和變量

使用 print 函數(shù)可以打印一個(gè)常量或變量的值:

print(friendlyWelcome)
// prints "Bonjour! "

print 是一個(gè)全局函數(shù),輸出值并且換行,如果你用 Xcode, print 將輸出在 Xcode 的“console”(控制臺(tái))中。
print函數(shù)打印傳遞給它的任何字符串:

print("This is a string")
// prints "This is a string"

print 函數(shù)可以打印更復(fù)雜的信息,與 Cocoa 里的 NSLog 函數(shù)類(lèi)似。這些信息可以包含常量和變量的值。

Swift 使用字符串插值(string interpolation)的方式,把常量或變量的名稱(chēng)作為一個(gè)占位符加入到一個(gè)長(zhǎng)字符串中,Swift會(huì)用常量或變量的值取代他們。將常量或變量名放入圓括號(hào)中,并在開(kāi)括號(hào)前使用反斜杠將其轉(zhuǎn)義:

print("The current value of friendlyWelcome is \(friendlyWelcome)")
// prints "The current value of friendlyWelcome is Bonjour! "

注釋

在代碼中使用注釋?zhuān)梢苑奖愦a閱讀。注釋會(huì)被Swift編譯器忽略。
Swift的注釋非常類(lèi)似于C 語(yǔ)言。單行注釋使用斜杠(//):

// this is a comment

也可以使用多行注釋?zhuān)孕备苄翘?hào)(/)開(kāi)始,并以星號(hào)斜杠結(jié)束(/) :

/* this is also a comment,
but written over multiple lines */

與 C 語(yǔ)言多行注釋不同,在Swift中多行注釋可以嵌套。先寫(xiě)一個(gè)多行注釋塊,然后在這個(gè)注釋塊中嵌套另一個(gè)多行注釋?zhuān)?/p>

/* this is the start of the first multiline comment
/* this is the second, nested multiline comment */
this is the end of the first multiline comment */

嵌套多行注釋能夠使你更快速、輕松地注釋掉大量的代碼,即使已經(jīng)包含多行注釋塊。

語(yǔ)句結(jié)束(;)

不同于許多其他語(yǔ)言,Swift不要求為每個(gè)語(yǔ)句的結(jié)尾處加一個(gè)分號(hào)( ; ),盡管你可以這樣做(如果你愿意)。
但是,如果你想在一行中寫(xiě)多個(gè)獨(dú)立的語(yǔ)句時(shí),分號(hào)是必需的。

let cat = "miao";println(cat)
//prints "miao"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,382評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,038評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,853評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,616評(píng)論 6 408
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,112評(píng)論 1 323
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,355評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,869評(píng)論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,727評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,928評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,165評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,570評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,813評(píng)論 1 282
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,585評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,892評(píng)論 2 372

推薦閱讀更多精彩內(nèi)容