關(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"