2014年6月Apple正式發表Swift程式語言; 2015年12月3日,蘋果又宣布開源swift, 並支援Linux ;
Swift 被譽為有史以來最強大程式語言, 的確, 如果你有用過 Objective-C 那種獨樹一格與其它任何C++不同表達式的C++, 你就會發覺 Swift可愛又好用多了, 如果你原本又懂Java或Javascript, 那鐵定你一定更可以很快上手。
從Github網站上可以看到Swift的程式範例可說是多如鱗毛, 網路上的教學網站甚至於以免費或付費逐步階段教學還真不少, 對於有心要學習Swift學習資源是夠多了!
但是Apple在Swift上卻又搞了一個很妙也很糗的狀況, 那就是, 短短一兩年內, Swift陸續推出了三個版本, Swift1.0, 1.2, 2.0; 一般搞資訊不管軟硬體都會有一個不成文原則, 就是不同版本間應該都是要維持向下相容的, 但Apple顯然打破了這個原則, 它不打算經由系統來相容前後版本差異, 而是要程式設計師修正 或 以編譯器提示舊版正確但新版被視為錯誤的要你改, 不改還編譯不了! 好怪呀!
當然這樣做法, Apple自然大部份也有它鐵的理由, 除了功能上增加外, 主要在於 "安全" 的要求. 程式設計師對這樣的前後版本不相容除了理解尊重及無可奈何外, 最後也只能接受!
好了, 現在下載及更新後的Xcode, Swift一定是2.0, 那麼前後版本差異會造成什麼實際問題呢? 寫程式往往需要找以前範例程式碼或模組來參考或套用, 不巧的還真不少程式碼都是用 swift2.0以前版本寫的, 結果套用下來卻不能用, 實在是讓人很尷尬, 一個可能是千載難逢很好的例子, 如果你不懂得如何修改成新版要求的程式碼的話, 你的程式會變成雞肋 - 食之無味棄之可惜;
前面也提到Github是最大原始程式碼下載點, 有關眾多Swift程式範例中, 若沒有特別標識採用 swift2.0話, 99%以上的範例都是錯誤跑不動的. 而這些範例在先前都是可以編譯可以跑的.
現在針對這些問題(還真不少), 程式設計師絕對無法要求Apple去改, 而只能自己去改, 要改你總要知道錯在那,怎麼改吧!
下列是我整理的前後版本差異並佐以實例:
一. println
swift1.2以前:
swift2.0修正:
print("字串")
// 好怪, println改成print,有那麼嚴重錯誤嗎? 有需要前後不能相容?
二. func supportedInterfaceOrientations()
三. find()
四. sort
五. sorted
六. enumerate()
七. Printable
八. DebugPrintable