1.2 Swift到底是怎樣的一種語言

1.2? Swift到底是怎樣的一種語言

Swift是一門博采眾長的現(xiàn)代語言,在設計的過程中,Chris參考了Objective-C揍移、Rust、Haskell反肋、Ruby那伐、Python、C#等優(yōu)秀語言的特點石蔗,最終形成了目前Swift的語法特性罕邀。這也是為什么使用各種語言的程序員都能從Swift中找到自己熟悉的影子的原因。那么养距,Swift語言到底是一種怎樣的語言诉探。可以從下面幾方面初步了解一下Swift語言棍厌。

(1)Swift是面向?qū)ο蟮纳隹琛⒕幾g型語言竖席。編譯時底層需要通過LLVM生成本地代碼才能執(zhí)行,所以效率還是很高的阳液。

(2)Swift可以使用Cocoa和Cocoa Touch中的API怕敬。這也就意味著Swift與Objective-C一樣揣炕,擁有了一個強大的Framework Library帘皿。

(3)Swift吸取了很多編程語言的優(yōu)點,同時Swift又具備了很多動態(tài)語言的語法特性和交互方式畸陡,當然鹰溜,Swift本身是靜態(tài)語言。所以丁恭,Swift盡可能地在靜態(tài)語言和動態(tài)語言之間尋找平衡點曹动。

(4)既然說Swift是一種擁有動態(tài)特性的靜態(tài)語言,那么Swift自然就是一門類型安全的語言牲览。編譯器可以在編譯過程中檢測出類型異常墓陈。例如,如果你期望為一個字符串變量賦值第献,那么類型安全機制會阻止你為這個變量設置整數(shù)贡必。正是由于類型安全機制的存在,使開發(fā)者可以更早地發(fā)現(xiàn)并修復錯誤庸毫。

(5)支持各種高級語言特性仔拟,包括閉包、泛型飒赃、面向?qū)ο罄ā⒍喾祷刂怠㈩愋徒涌谠丶选⒃M炒事、集合等蔬顾。

(6)Swift能與Objective-C進行混合編程[ 這一點與Objective-C和C++的混合編程不同迄埃。這兩種語言的混合編程,代碼可以混合放在同一個文件中(.mm)踊餐。]藕漱,但代碼分屬不同的文件欲侮。

(7)全面支持Unicode編碼。也就是說肋联,可以用任何想用的字符作為變量名威蕉,例如,一個笑臉字符或漢字橄仍。圖1-1就是使用笑臉圖標和漢字作為變量名的一個典型例子韧涨。

(8)使分號(;)變成了可選的符號牍戚。通常的靜態(tài)語言,如Java虑粥、C#如孝。每條語句結(jié)束后,都會在最后加上“;”娩贷,而Swift的每條語句不需要加“第晰;”,當然彬祖,加上也沒問題茁瘦。只有在兩條或多條語句寫在同一行時才必須加“;”。

(9)簡化和增強了集合數(shù)據(jù)類型储笑。用過Java和C#的讀者知道甜熔。在這兩種語言中,各種集合類型不可謂不全突倍,但太多也有它不好的地方腔稀,就是不知道使用哪個。而且這些集合數(shù)據(jù)類型的功能也不夠強大羽历。在Swift語言中只提供了數(shù)組(Array)和字典(Dictionary)兩個集合數(shù)據(jù)類型焊虏。其中Array類似List的功能,可以修改窄陡、添加炕淮、替換和刪除數(shù)組元素。Dictionary類似Map的功能跳夭,用于存儲Key-Value風格的值涂圆。

(10)Swift可以通過元組實現(xiàn)函數(shù)返回多個值。這一功能在其他語言中需要通過返回一個對象或結(jié)構體(指針)來實現(xiàn)币叹。

(11)提供了優(yōu)雅的閉包解決方案润歉。例如,在排序函數(shù)sort中可以將函數(shù)作為參數(shù)值傳遞颈抚。下面的代碼是一種典型的寫法:

letarray1=?["X",?"A",?"1",?"2",?"Z"]

func?backwards(s1:?String,?s2:?String)?->Bool

{

return?s1>s2

}

vararray2=sort(array1,?backwards)

當然踩衩,更簡潔的寫法是var array2 = sort(["X", "A", "1", "2", "Z"] ) { $0 > $1 },如果讀者不明白這么寫是什么意思贩汉,那么就繼續(xù)往后看吧驱富!

(12)Swift語言中提供了一種可選變量(Optional)。主要是為了應對一個變量可能存在匹舞,也可以是nil的情況褐鸥。例如,將一個字符串(String)轉(zhuǎn)換為整數(shù)(Int)赐稽,但這個字符串是否可以成功轉(zhuǎn)換為整數(shù)呢叫榕?如果不確定浑侥,就返回一個可選變量。如果成功轉(zhuǎn)換晰绎,則返回正常的整數(shù)值寓落;如果轉(zhuǎn)換失敗,則返回nil荞下。實現(xiàn)的代碼如下:

letstr="126CB5"

letvalue=str.toInt()??//??value是一個可選常量(用let聲明是常量伶选,用var聲明是變量)

這時,value就是一個可選變量锄弱。要想判斷轉(zhuǎn)換是否成功考蕾,可以使用下面的代碼:

if?value

{

//??如果value是可選變量,引用時需要加上“!”会宪,

//?表示該選項變量中肯定有一個值

println(value!)

}

可選變量的引入解決了大部分需要顯式處理的異常,這部分工作也扔給編譯器去做了蚯窥。

(13)擁有不同意義的nil掸鹅。在Swift中的nil和Objective-C中的nil不同。在Objective-C中拦赠,nil是指向不存在對象的指針巍沙,而在Swift里,nil不是指針荷鼠,它表示特定類型的值不存在句携。所有類型的可選值都可以被設置為nil,不僅是對象類型允乐。

(14)Swift中沒有從語言層面支持異步和多核矮嫉,不過可以直接在Swift中復用GCD(Grand Central Dispatch)的API實現(xiàn)異步功能。

(15)Swift沒有一部處理機制牍疏〈浪瘢可能是認為有了可選變量,異常會很少使用鳞陨,所以未加入異常處理昨寞。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市厦滤,隨后出現(xiàn)的幾起案子援岩,更是在濱河造成了極大的恐慌,老刑警劉巖掏导,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件享怀,死亡現(xiàn)場離奇詭異,居然都是意外死亡碘菜,警方通過查閱死者的電腦和手機凹蜈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門限寞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仰坦,你說我怎么就攤上這事履植。” “怎么了悄晃?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵玫霎,是天一觀的道長。 經(jīng)常有香客問我妈橄,道長庶近,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任眷蚓,我火速辦了婚禮鼻种,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沙热。我一直安慰自己叉钥,他們只是感情好,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布篙贸。 她就那樣靜靜地躺著投队,像睡著了一般。 火紅的嫁衣襯著肌膚如雪爵川。 梳的紋絲不亂的頭發(fā)上敷鸦,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音寝贡,去河邊找鬼扒披。 笑死,一個胖子當著我的面吹牛兔甘,可吹牛的內(nèi)容都是我干的谎碍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼洞焙,長吁一口氣:“原來是場噩夢啊……” “哼蟆淀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起澡匪,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤熔任,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后唁情,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疑苔,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年甸鸟,在試婚紗的時候發(fā)現(xiàn)自己被綠了惦费。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兵迅。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖薪贫,靈堂內(nèi)的尸體忽然破棺而出恍箭,到底是詐尸還是另有隱情,我是刑警寧澤瞧省,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布扯夭,位于F島的核電站,受9級特大地震影響鞍匾,放射性物質(zhì)發(fā)生泄漏交洗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一橡淑、第九天 我趴在偏房一處隱蔽的房頂上張望构拳。 院中可真熱鬧,春花似錦梳码、人聲如沸隐圾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜜笤,卻和暖如春濒蒋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背把兔。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工沪伙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人县好。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓围橡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缕贡。 傳聞我的和親對象是個殘疾皇子翁授,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

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