譯者: Elaine.Ye
原作者:Paul Rubens
發(fā)表時(shí)間:2014-11-19
蘋果公司最近推出了一門新的開(kāi)發(fā)語(yǔ)言Swift,,旨在替代用于OS X和iOS應(yīng)用開(kāi)發(fā)的Objective-C,。在進(jìn)入第三個(gè)季度之后,蘋果公司才會(huì)接受使用Swift構(gòu)建的應(yīng)用向iOS或Mac App商店提交的申請(qǐng),到時(shí)蘋果公司會(huì)發(fā)行iOS 8和下一個(gè)版本的OS X(Yosemite),,所以,,現(xiàn)在還有一些時(shí)間來(lái)了解一下這一新編程語(yǔ)言的一些來(lái)龍去脈。
蘋果公司最近推出了一門新的開(kāi)發(fā)語(yǔ)言Swift,,旨在替代用于OS X和iOS應(yīng)用開(kāi)發(fā)的Objective-C。在進(jìn)入秋季之后,,蘋果公司才會(huì)接受使用Swift構(gòu)建的應(yīng)用向iOS或Mac App商店提交的申請(qǐng),,到時(shí)蘋果公司會(huì)發(fā)行iOS 8和下一個(gè)版本的OS X(Yosemite),所以,,現(xiàn)在還有一些時(shí)間來(lái)了解一下這一新編程語(yǔ)言的一些來(lái)龍去脈,。 閑話少提,關(guān)于Swift,,下面這十件事情是您很有必要知悉的,。 1. Swift應(yīng)會(huì)對(duì)年輕一代程序員產(chǎn)生吸引力。Swift更類似于諸如Ruby或Python一類的語(yǔ)言而非Objective-C,。例如,,在使用Swift編寫代碼時(shí),無(wú)需在語(yǔ)句結(jié)尾處加上一個(gè)分號(hào),,這點(diǎn)很像Python,。而在使用Objective-C編碼時(shí),這是必需的,;在一行語(yǔ)句末端忘記輸入一個(gè)分號(hào)會(huì)導(dǎo)致錯(cuò)發(fā)生,。若您曾經(jīng)使用Ruby或是Python編程,那么Swift應(yīng)能引發(fā)您的興趣,。 雖說(shuō)如此,,但Swift同時(shí)兼容現(xiàn)有的Objective-C庫(kù),使用Swift編寫與現(xiàn)有的Objective-C代碼庫(kù)進(jìn)行交互的新模塊,,這完全沒(méi)有問(wèn)題,。若您已經(jīng)使用Objective-C構(gòu)建了一個(gè)很重要的技能庫(kù),那么這一兼容性也會(huì)使得Swift顯得很有吸引力,。 2. Swift會(huì)是一門(更)安全的語(yǔ)言,。在各類微妙地帶,蘋果公司都竭力保證Swift的安全性,。對(duì)于初學(xué)者來(lái)說(shuō),,編程人員必須使用一對(duì)花括號(hào)來(lái)指定“if”語(yǔ)句的開(kāi)始和結(jié)束位置,這可以避免諸如SSL代碼中的“goto fail”錯(cuò)誤,。此外,,switch語(yǔ)句必須包含一個(gè)default語(yǔ)句,這保證了即使語(yǔ)句中沒(méi)有一種可能性成立,語(yǔ)句最終也會(huì)執(zhí)行一些內(nèi)容,。 3. Swift的速度沒(méi)那么快,。盡管取了這么個(gè)名字(譯者注:swift中文意即迅速),Swift不太可能讓應(yīng)用在運(yùn)行速度方面大大勝過(guò)那些使用Objective-C編寫的應(yīng)用。盡管這是兩種不同的語(yǔ)言,,他們又非完全不同,,他們都針對(duì)相同的Cocoa和Cocoa Touch API(分別用于OS X 和iOS),兩者都是靜態(tài)類型的語(yǔ)言,,還使用同一種LLVM編譯器,。性能有差異是難免,畢竟這是兩種不同的語(yǔ)言,,但別期待有顯著的差異,。 4. Swift尚未以全貌現(xiàn)身(譯者注:指在作者發(fā)表本文時(shí))。目前提供的這一語(yǔ)言還不是最終成品,,蘋果公司仍在繼續(xù)對(duì)之加以完善,,在接下來(lái)的幾個(gè)月中,很有可能會(huì)往其中添加一些新的功能,。雖然,,為了讓自己熟悉這一語(yǔ)言而使用Swift進(jìn)行編碼是一項(xiàng)值得去做的事情,但要實(shí)現(xiàn)這一點(diǎn),,您需要用到Xcode 6的測(cè)試版和iOS 8的SDK(也是測(cè)試版),。而且別忘了,只有在先發(fā)布了Yosemite和 iOS 8之后,,蘋果公司的商店才會(huì)接受使用Swift構(gòu)建的應(yīng)用,。 5. 您可以在“Playground”中測(cè)試Swift代碼,Swift的最有趣功能之一就是這個(gè)被稱作Playground的交互性環(huán)境,,該工具允許您在輸入代碼時(shí)查看修改或添加代碼所帶來(lái)的影響,,無(wú)需通過(guò)編譯和運(yùn)行代碼這一耗時(shí)的繁瑣程序來(lái)驗(yàn)證這一點(diǎn)。 Playground的功能還包括了“(Watch)查看”變量值這一能力,,在代碼的單獨(dú)一行中輸入變量的名字就可以看到顯示在側(cè)欄上的變量當(dāng)前值,,同時(shí)還會(huì)看到一組“Quick Look(快速查看)”按鈕,這些按鈕被用來(lái)顯示圖片,、串和其他一些適用于圖形化顯示的內(nèi)容,。 6. Swift提供了類型推斷功能。與Scala,、Opa和其他一些正處在上升勢(shì)頭的編程語(yǔ)言相類似,,Swift會(huì)進(jìn)行類型推斷。代碼編寫人員再無(wú)需花費(fèi)時(shí)間使用類型信息來(lái)注解變量,,且這還要冒犯錯(cuò)的危險(xiǎn),;在大部分情況下,編譯器可通過(guò)為變量所設(shè)定的值來(lái)推斷出變量的類型。 因此,,您可預(yù)期的一件事是,,隱藏在代碼中的與類型相關(guān)的錯(cuò)誤會(huì)更少。此外,,還得多謝智能優(yōu)化,,您的代碼會(huì)因此運(yùn)行得更快。 7. Swift引入了泛型,。在使用靜態(tài)類型的語(yǔ)言編寫函數(shù)時(shí),,您需要聲明函數(shù)參數(shù)的類型,這沒(méi)有什么問(wèn)題,,但在您編寫希望其能在用到不同類型的不同環(huán)境中工作的函數(shù)時(shí),問(wèn)題就來(lái)了,。 輸入泛型,。與C++中的Template非常類似,泛型是可被不同變量類型重用而又無(wú)需為每種類型進(jìn)行重寫的這樣一些函數(shù),。比如說(shuō),,一個(gè)把數(shù)組中的內(nèi)容相加的函數(shù),在某些情況下,,這些內(nèi)容可能是整數(shù),,而在另一些情況下,則是浮點(diǎn)數(shù),。 8. Swift更易于處理串,。若Objective-C中的串處理讓您抓狂,那么您會(huì)愛(ài)上Swift的,,因?yàn)檫@一新語(yǔ)言對(duì)串的處理要簡(jiǎn)單得多,。最值得注意的是,您可以簡(jiǎn)單地使用“+=”符號(hào)來(lái)連接串,,以及使用“==”符號(hào)來(lái)比較串,,以此來(lái)替代羅嗦得多的“isEqualToString:”。此外,,串還可以用在switch語(yǔ)句中,。 9. Swift元組提供了復(fù)合變量。元組允許您把多個(gè)元素組合到一個(gè)復(fù)合變量中,,Swift元組中的這些變量可以是任何一種類型,,彼此之間不必是相同的類型。您可以通過(guò)任何自己想用的類型排列來(lái)創(chuàng)建一個(gè)元組:(Int, Int, Int),、(int, String),、(String,Bool)或任何其他您所需的排列都可以。 獲取元組中的值的做法有多種,例如,,您可以通過(guò)索引值(從0開(kāi)始)來(lái)訪問(wèn)它們,,或者也可以把一個(gè)元組分解成一些單獨(dú)的常量或變量。 10. 蘋果公司掌控Swift的未來(lái),。已存在30年的時(shí)間,,Objective-C已是相當(dāng)?shù)睦系粞懒恕2贿^(guò),,蘋果公司并未明確表示引入這一新語(yǔ)言的理由,。那么最有可能的原因是什么呢?也許是,,作為Swift的創(chuàng)造者,,蘋果公司可以隨時(shí)隨意添加或修改任何他所想要的功能。 另外的一個(gè)好處是,,一旦Swift成為主流,,這將使得把iOS應(yīng)用移植到安卓平臺(tái)上成為一件更不易實(shí)現(xiàn)的事情,您將無(wú)法使用一些現(xiàn)有的和相對(duì)成熟的工具來(lái)實(shí)現(xiàn)Objective-C到Java的移植,。 |
|
來(lái)自: 昵稱535749 > 《智能手機(jī)》