苹果新的编程语言 Swift 语言进阶(一)--综述
? ? ?? ? Swift 是蘋(píng)果開(kāi)發(fā)和提供的供開(kāi)發(fā)IOS 和OS X應(yīng)用的一門(mén)新的語(yǔ)言。Swift語(yǔ)言基于C 和Objective-C語(yǔ)言,除了提供C 和Objective-C語(yǔ)言具有的所有語(yǔ)法功能外,為了編程方便和高效,Swift在語(yǔ)法上作了大量的優(yōu)化和改進(jìn)。
? ? ? ? ?Swift采用安全編程模式,具有許多先進(jìn)的強(qiáng)大的功能 ,如動(dòng)態(tài)運(yùn)行時(shí)、編譯動(dòng)態(tài)進(jìn)行類型檢查、Closures、下標(biāo)功能、自動(dòng)引用計(jì)數(shù)、選項(xiàng)類型、通用類型和類型編譯時(shí)推斷、類型的擴(kuò)展和嵌套、協(xié)議類型、功能和類型的通用化、操作符的定制和添加。 ? ? ??
? ? ? ? ?Swift語(yǔ)言的設(shè)計(jì)思想是:語(yǔ)言和編譯器承擔(dān)不同的職責(zé),語(yǔ)言本身承擔(dān)程序語(yǔ)義的呈現(xiàn),為程序編寫(xiě)服務(wù),為提高編程效率進(jìn)行了最大程度的優(yōu)化;而編譯器承擔(dān)語(yǔ)言的理解和編譯職責(zé),對(duì)程序的執(zhí)行效率和性能進(jìn)行最大程度的優(yōu)化。
? ? ? ? ?因此Swift語(yǔ)言在設(shè)計(jì)時(shí)在保持語(yǔ)義可理解的基礎(chǔ)上為了提供編程效率在語(yǔ)法上做了最大程度的優(yōu)化,使語(yǔ)言本身更加干凈和簡(jiǎn)潔,功能更加強(qiáng)大、更富有表現(xiàn)力,并不失靈活性,如實(shí)現(xiàn)了語(yǔ)言語(yǔ)法上的面向?qū)ο蠛瓦^(guò)程化部分的有機(jī)統(tǒng)一、去除了c 語(yǔ)言的語(yǔ)法上的諸多限制等。
? ? ? ? Swift語(yǔ)言通過(guò)語(yǔ)言和編譯器兩方面的優(yōu)化使 采用Swift 語(yǔ)言進(jìn)行編程更加容易、編程效率更高,同時(shí)程序的 執(zhí)行效率和安全又得到保證。? ? ? ?
?? ? 一、Swift語(yǔ)言的簡(jiǎn)潔性、靈活性
? ? ? ? Swift語(yǔ)言為了保持語(yǔ)言的簡(jiǎn)潔在語(yǔ)法的各個(gè)方面(包括程序結(jié)構(gòu)、關(guān)鍵字等)進(jìn)行了優(yōu)化,在不失理解性的基礎(chǔ)上去除了冗余的語(yǔ)法,能夠交給編譯器的工作盡量交給編譯器處理。
? ? ? ? 如 每個(gè)語(yǔ)言實(shí)現(xiàn)的第一個(gè)程序,打印一條"Hello, world”。
? ? ? ? Swift語(yǔ)言為了實(shí)現(xiàn)上述功能只是下面的一條語(yǔ)句。
?? ? ? ?println("Hello, world”)
? ? ? ? ?該語(yǔ)句在Swift語(yǔ)言中就是一個(gè)完整的程序 ,不需要輸入另外的分離的庫(kù)和頭文件,也沒(méi)有通常語(yǔ)言都有的main?函數(shù)聲明,就連語(yǔ)句最后的分號(hào)也省略了。
? ? ? ? ?Swift語(yǔ)言也沒(méi)有C語(yǔ)言通常的頭文件,所有的實(shí)現(xiàn)和聲明都在一個(gè)后綴為.swift的文件中,這也是為了提高編程效率的需要,不需要用戶維護(hù)兩個(gè)文件。對(duì)于其它代碼需要的某個(gè)類的接口可以自動(dòng)獲得和使用。
? ? ? ? Swift語(yǔ)言對(duì)關(guān)鍵字的命名在不失準(zhǔn)確性的基礎(chǔ)上也是盡量的簡(jiǎn)化,如整數(shù)類型為Int,而不是Integer,布爾類型是Bool而不是Boolean等。
?? ? ? ? Swift語(yǔ)言對(duì)循環(huán)語(yǔ)句添加了for-in形式,使其更加容易地對(duì)數(shù)組、詞典、范圍、字符串和其它序列進(jìn)行遍歷。
? ? ? ?為了語(yǔ)言的干凈,包圍條件和循環(huán)變量的圓括號(hào)也被省略了。
? ? ? ? 如:
for (kind,numbers)?in?interestingNumbers {
? ?for?number?in?numbers {
? ? ? ? if?number >largest {
? ? ? ? ? ?largest =number
? ? ? ? }
? ? }
}
? ? ? ? 對(duì)于Switch控制結(jié)構(gòu)也作了語(yǔ)法的簡(jiǎn)化,為了語(yǔ)法的簡(jiǎn)潔和更少的的出錯(cuò),在每個(gè)對(duì)應(yīng)Switch的case的執(zhí)行代碼執(zhí)行完后,程序自動(dòng)退出switch語(yǔ)句,不再繼續(xù)執(zhí)行下面的case 語(yǔ)句,因此不需要在每個(gè)case對(duì)應(yīng)的執(zhí)行代碼后添加一個(gè)冗余的break語(yǔ)句。而其它語(yǔ)言如C語(yǔ)言需要在每個(gè)case 語(yǔ)句后面添加多余的break語(yǔ)句,用戶也經(jīng)常會(huì)忘記添加這個(gè)多余的break語(yǔ)句,因此造成程序邏輯出錯(cuò)。
? ? ? ? ? ?Swift語(yǔ)言雖然在語(yǔ)法上進(jìn)行了去冗余化工作,但在語(yǔ)法功能上卻沒(méi)有精簡(jiǎn),反而大大增強(qiáng)了功能,除了支持C語(yǔ)言和Objective-C語(yǔ)言的幾乎所有功能外,還添加和增強(qiáng)了許多功能,如下標(biāo)功能、元組類型、選項(xiàng)類型、類型的擴(kuò)展和嵌套、功能和類型的通用化、操作符的定制和添加等許多功能。
? ? ? ?另外Swift語(yǔ)言更加靈活,相對(duì)c 語(yǔ)言或其它語(yǔ)言具有更少的語(yǔ)法限制。如
? ? ? ?Swift語(yǔ)言的注釋像c 語(yǔ)言一樣支持以//開(kāi)始的單行注釋,也支持/* */形式的多行注釋。但沒(méi)有了c 語(yǔ)言對(duì)多行注釋不能嵌套的限制,Swift 的多行注釋支持嵌套。如下所示 :
?? ?
? ? ? /* 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 */
? ?Swift還支持使用println功能或print直接打印一個(gè)變量或常量的值,或者插入一個(gè)字符串類型中進(jìn)行輸出。。
?var?friendlyWelcome =“Hello!"
? println(friendlyWelcome)
或
? println("The current value of friendlyWelcome is\(friendlyWelcome)”)。
? ? ? ? 總之,Swift語(yǔ)言在語(yǔ)法語(yǔ)句上雖然與C語(yǔ)言相似,但在語(yǔ)法的許多方面作了許多精簡(jiǎn)和增強(qiáng),可以說(shuō)Swift語(yǔ)言是C語(yǔ)言的精簡(jiǎn)化、Objective-C語(yǔ)言的功能增強(qiáng)化,并且具有腳本語(yǔ)言的表達(dá)化等特點(diǎn),因此Swift語(yǔ)言是一門(mén)語(yǔ)法更自然,表達(dá)更豐富的語(yǔ)言。
?二、Swift語(yǔ)言的安全性和語(yǔ)義清晰性
? ? ?Swift是一門(mén)類型安全的語(yǔ)言,即在編譯階段必須進(jìn)行類型檢查明確使用到的每個(gè)變量或常量的類型。類型安全的語(yǔ)言可以在開(kāi)發(fā)編譯階段更好的發(fā)現(xiàn)和修改類型使用上的錯(cuò)誤,可以開(kāi)發(fā)一個(gè)更加安全可靠的程序。
??
? ? ?Swift在編譯代碼時(shí)進(jìn)行類型檢查,但不意味著必須為每一個(gè)聲明的常量或變量規(guī)定類型。
? ? ?Swift編譯器提供了類型推斷機(jī)制--編譯代碼時(shí),通過(guò)簡(jiǎn)單檢查你提供的表達(dá)式的值自動(dòng)推斷表達(dá)式的類型。
? ? ?由于Swift使用類型推斷,Swift可以提供比其它語(yǔ)言更簡(jiǎn)潔的類型聲明語(yǔ)法,雖然語(yǔ)法簡(jiǎn)潔,但類型仍然能夠在編譯階段被明確確定。Swift的編譯器推斷類型功能在Swift語(yǔ)言要求的類型安全與語(yǔ)法的簡(jiǎn)潔上做到了最好的統(tǒng)一。
?? ? 如當(dāng)你使用一個(gè)初始值來(lái)聲明一個(gè)常量或變量時(shí),Swift編譯器能夠自動(dòng)根據(jù)變量或常量的初始值來(lái)推斷變量或常量的類型。
? ?let?maximumNumberOfLoginAttempts =10
? ?var?currentLoginAttempt =0
? ? ?對(duì)于上面的對(duì)maximumNumberOfLoginAttempts常量和currentLoginAttempt變量的聲明,Swift能夠推斷其為Int類型。
? ? let?pi?=?3.14159
? ?上面語(yǔ)句Swift推斷你想創(chuàng)建一個(gè)Double類型的常量。Swift總是推斷一個(gè)浮點(diǎn)數(shù)的類型為Double。
? ?如變量或常量在聲明時(shí)沒(méi)有提供初始值,使Swift編譯器不能推斷其類型,就需要明確的為其指定類型。如下所示,聲明一個(gè)字符串類型的變量。
? ???var ?welcomeMessage: String
? ? 因此Swift還是一門(mén)語(yǔ)義更加安全、更加清晰的語(yǔ)言。
轉(zhuǎn)載于:https://www.cnblogs.com/aiwz/p/6154489.html
總結(jié)
以上是生活随笔為你收集整理的苹果新的编程语言 Swift 语言进阶(一)--综述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java mysql 异步查询数据库_j
- 下一篇: 安卓突然自动关机 android正在启动