Swift 2.2 有哪些變化?
這次蘋果公開宣佈的Swift2.2是隨著Swift開源之後,通過反映了在Github提交的許多bug的首次官方版本。並且蘋果公司一起釋出了 XCode 7.3,讓我們看看有哪些變化吧。如大家所熟知的 Swift 3.0 預計會在今年年末(2016年10月份)釋出,Swift 2.2 可以說是一個過渡性版本,主要是bug修復,效能提升,在不影響原先程式碼使用的一些小改進。本文的內容並不是Swift 2.2的所有內容,主要是總結了官方釋出文件中這次更新的主要內容。請參考官方公佈文件
棄用 ++
、--
和 C 風格的 for 迴圈語句
SE-0004 相比使用 num++,integer 或者 float 更為推薦使用 num += 1,Index 方式則使用 x = x.successor()。使用 ++ 並不會馬上就會有錯誤提示,但是隨著日後3.0版本的釋出,++ 語法的消失,會出現程式碼錯誤修正提示。Swift 3.0 會有很多修正和改善的語法,現在就行動起來把 ++ 和 -- 去掉也未嘗不可。
++ 和 -- 不再使用的原因是雖然所有的開發者非常明確的知道 a++ 和 ++a 的差異,但是非常影響程式碼的可讀性,並且上述語法是在 C 風格的 for 迴圈語句中最為常用,由於 C 風格的 for 迴圈語句在 3.0 版本中會完全消失,所以 ++ 和 -- 的刪除並不會給開發者帶來太多的不便。
C風格的 for 迴圈語句不建議再使用。
官方建議使用如下方式的 for 迴圈語句
for i in 1...10 { print("\(i) iphone") }
使用陣列進行遍歷。
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for number in array { print("\(number) green bottles") }
C 風格的 for 迴圈語句在 3.0 版本中會完全消失。
支援更多的關鍵字用作為引數名
Argument labels(為引數新增標記)是 Swift 的一項語法。如下所示,可以在傳遞帶標記的引數,不用考慮引數的順序,通過引數前的標記提高了程式碼的可讀性。
for i in 1.stride(through: 9, by: 2) { print(i) }
這段程式碼輸出的結果和下段程式碼所輸出的結果不同。 (stride 函式的 through 和 to 不同),請參考stride 文件。
for i in 1.stride(to: 9, by: 2) { print(i) }
Argument label 可以使用的名字有很多限制條件,但是在2.2版本中大部分關鍵字變的可用。現在只有 var、let 和 inout 不能使用,但是這個限制條件會在 3.0 版本中消失。
更為詳細的內容請參考 SE-0001。
為 Tuple(元祖)增加對比操作符
在 Swift 2.2 版本以前是無法比較兩個元祖的。在新版本中我們可以用如下的方式比較兩個元祖。
let singer = ("Taylor", "Swift") let korea = ("Gangnam", "Style") if singer == korea { print("Matching tuples!") } else { print("Non-matching tuples!") }
但是支援範圍僅在 Tuple(元祖)裡面的元素不多於6個的情況下。
更為詳細的內容請參考SE-0015。
改善 associated(關聯) 型別變數宣告方式
使用 typealias 關鍵字可以宣告2種不同型別的變數。
- 為一個已經存在的型別取個別名
- 在協議中作為一個型別的佔位名稱
上述2種是完全不懂的用法,不應該用一樣的關鍵字,為了宣告 associated 型別的變數應該使用 associatedtype,而不是使用 typealias。更為詳細的內容請參考 SE-0011。
增加 #if swift 語法在編譯期檢測 Swift 版本
Swift 2.2 在 編譯設定裡支援如下方式的 Swift 版本檢測
#if swift(>=2.2) print("Running Swift 2.2 or later") #else print("Running Swift 2.1 or earlier") #endif
更為詳細的內容請參照SE-0020
其他
- Swift Package Manager距離釋出還有很長一段時間。
- 現在在 linux 上並沒有太多的改善. 雖然這回釋出的 Swift Core Libraries 沒有包含,但是 LLDB 和 the REPL 已經包含了。
- 開發者文件更新 點選這裡 檢視詳細內容。
相關文章
- iOS 7.1 API 有哪些新變化iOSAPI
- Java最新發布版本有哪些變化?Java
- Android 支援庫 v26 有哪些變化?Android
- Swift 4 前後 KVO 的變化Swift
- Swift4 的變化列舉Swift
- 除了iPhone SE 蘋果Swift 2.2也來了iPhone蘋果Swift
- 回顧 2017, Java 有哪些重大變化值得關注?Java
- 這屆NeurIPS裡有哪些變與不變?
- mysql中自定義變數有哪些MySql變數
- 進入全面隱私時代,iOS買量市場有哪些變化?iOS
- Swift_監聽UITextField內容的變化SwiftUI
- 除了月流水700萬美元的Yalla Ludo,遊戲社交有哪些新變化?遊戲
- MixPHP V3 釋出前的感想, 有哪些變化和特點PHP
- OAuth 2.1 帶來了哪些變化OAuth
- 升級Windows10正式版後觸控板手勢有哪些變化?Windows
- 機器人時代來了勞動力市場或將有哪些變化機器人
- 智慧經營3.0都有哪些數字化變化?
- Swift 變數 (三)Swift變數
- Swift 漸變 imageSwift
- 網站最佳化技巧有哪些?網站
- APT攻擊有何變化?APT
- Swift 漸變 UISliderSwiftUIIDE
- Swift: 可變引數Swift
- 資料庫效能優化有哪些方式資料庫優化
- 頁面效能優化辦法有哪些?優化
- 資料庫效能優化有哪些措施?資料庫優化
- 記錄專案中Swift3.0的語法變化Swift
- 流程執行期儲存流程變數的表有哪些變數
- 美顏SDK的變形演算法有哪些妙用?演算法
- PHP8引入了一些重大變更,有哪些新特性與效能優化?PHP優化
- 變頻空調和定頻空調的區別有哪些 有何不同
- JS每日一題: 前端優化手段有哪些JS每日一題前端優化
- 資料視覺化呈現方式有哪些視覺化
- 集團數字化管理系統有哪些
- 模組化區塊鏈的有時包括哪些?區塊鏈
- 大資料視覺化有哪些優勢大資料視覺化
- COUNT(*)計算行數有哪些優化手段優化
- Swift(一)常量和變數Swift變數