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

關(guān)于Swift

Swift 是一種新的編程語言忌愚,主要用于IOS 和 Mac OS X 應(yīng)用程序的開發(fā)夹纫。盡管如此寸宵,Swift 的許多部分和 C 和 Objective - C 語言類似恤煞。

Swift 提供自己的語言類型版本姓赤,所有的都是基于 C 和 Objective - C 的基本類型铝条,包括 Int靖苇、Double 、 Float 班缰、Bool贤壁、String 。Swift還提供了強(qiáng)大的兩個(gè)集合類型版本:Array 和 Dictionary 埠忘。

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

除了熟悉的類型鉴腻,Swift 引入了在 Objective - C中沒有的更先進(jìn)的類型迷扇。比如元組,通過元組爽哎,您能夠創(chuàng)建和傳遞一組值蜓席。在作為函數(shù)的返回值時(shí),通過元組可以返回多個(gè)值课锌。

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

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

常量和變量

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

聲明常量和變量

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

let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0

這段代碼可以理解為:
“聲明一個(gè)名稱為 maximumNumberOfLoginAttempts 的常量,并初始化值 10 纹磺。 聲明一個(gè)名稱為 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ǔ)需要改變的值。

類型標(biāo)注

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

var welcomeMessage: String

“冒號(hào)” 意味著“是...類型”丹泉,所以上面的代碼可以解讀為:
“聲明一個(gè)名稱為welcomeMessage的變量,是String類型的鸭蛙∧『蓿”
“是String類型的”這個(gè)短語的意思是“可以存儲(chǔ)任何字符串值∪⑹樱”

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

welcomeMessage = "Hello"

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

命名常量和變量

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

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

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

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

可以改變變量的值為另一個(gè)相同類型的值徐绑。在下面的例子中,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ù)類似。這些信息可以包含常量和變量的值山憨。

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

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

注釋

在代碼中使用注釋,可以方便代碼閱讀枪孩。注釋會(huì)被Swift編譯器忽略。
Swift的注釋非常類似于C 語言藻肄。單行注釋使用斜杠(//):

// this is a comment

也可以使用多行注釋蔑舞,以斜杠星號(hào)(/)開始,并以星號(hào)斜杠結(jié)束(/) :

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

與 C 語言多行注釋不同嘹屯,在Swift中多行注釋可以嵌套攻询。先寫一個(gè)多行注釋塊,然后在這個(gè)注釋塊中嵌套另一個(gè)多行注釋:

/* 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)包含多行注釋塊。

語句結(jié)束(;)

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

let cat = "miao";println(cat)
//prints "miao"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末最蕾,一起剝皮案震驚了整個(gè)濱河市依溯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘟则,老刑警劉巖黎炉,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異醋拧,居然都是意外死亡慷嗜,警方通過查閱死者的電腦和手機(jī)淀弹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洪添,“玉大人垦页,你說我怎么就攤上這事「缮荩” “怎么了痊焊?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長忿峻。 經(jīng)常有香客問我薄啥,道長,這世上最難降的妖魔是什么逛尚? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任垄惧,我火速辦了婚禮,結(jié)果婚禮上绰寞,老公的妹妹穿的比我還像新娘到逊。我一直安慰自己,他們只是感情好滤钱,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布觉壶。 她就那樣靜靜地躺著,像睡著了一般件缸。 火紅的嫁衣襯著肌膚如雪铜靶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天他炊,我揣著相機(jī)與錄音争剿,去河邊找鬼。 笑死痊末,一個(gè)胖子當(dāng)著我的面吹牛蚕苇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凿叠,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼捆蜀,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了幔嫂?” 一聲冷哼從身側(cè)響起辆它,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎履恩,沒想到半個(gè)月后锰茉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡切心,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年飒筑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了片吊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡协屡,死狀恐怖俏脊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肤晓,我是刑警寧澤爷贫,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站补憾,受9級(jí)特大地震影響漫萄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盈匾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一腾务、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧削饵,春花似錦岩瘦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至尤仍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間狭姨,已是汗流浹背宰啦。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饼拍,地道東北人赡模。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像师抄,于是被迫代替她去往敵國和親漓柑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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