swift 2特性記錄

來源:互聯網
上載者:User

標籤:

swift 團隊一直在最佳化,讓大家準備在秋天的時候,遷移到swift2做準備。

一、錯誤處理

異常處理,不是NSError對象和雙指標。

可以使用 throws   來指定方法來拋出一個錯誤。

調用do  try catch 多個關鍵字來捕獲和處理錯誤。

NSError對象的引用,inout 

方法會賦值給錯誤變數,傳入一個nil到這裡完全忽略這個錯誤,或者傳入  NSError但從不檢查它。

enum  DrinkError:ErrorType

{

case NoBeerRemainingError

}

func drinkWithError()throws

{

if beer.isAvailable()

{

// party!

}else{

throw DrinikError.NoBeerRemainingError

}

}

func tryToDrink()

{

do{

try drinkWithError()

}

catch{

print("could not drink beer!:[")

return

}

}

1、建立一個繼承ErrorType的enum

2、使用throws關鍵詞,標誌任何函數可以拋出一個錯誤。

3、拋出一個錯誤,將會在section4中被捕獲。

4、在do塊中包含任何可以拋出一個錯誤的代碼,而不是其他語言類似的try快中,然後你添加一個try關鍵字到函數被調用的前面,這個函數能夠拋出一個錯誤。

綁定

在swift 1.2 失去了金字塔的厄運和能夠在一行代碼測試多個綁定的optionals;

if let pants = pants,frog = frog{

// good stuff here!

}

檢查一些沒有值的optionals   早點退出,這是swift 2提供的guard語句。

guard let pants = pants,frog = frog else{

// sorry,no frog pants here

return

}

使用guard意味著你可以執行optional binding ,如果條件失敗就提供一個代碼塊在else運行,你可以繼續執行,optiional frog 和 pants在範圍內被unwrap

使用guard指定某種你希望得到狀態而不是檢查錯誤情況之後,使代碼更加簡潔。

協議擴充

面向協議的程式設計語言

在swift1,協議就像介面一樣可以指定一些屬性和方法,類,結構體,枚舉會遵循它。

在swift2,你可以擴充協議給屬性和方法添加預設實現,你之前已經可以在類和結構體添加新的方法到string 或 array

你可以添加這些到協議,讓你更加廣泛應用。

extension CustomStringConvertible{

var shoutDescription:String{

return "\(self.description.uppercaseString)!!!"

}

}

let greetings = ["Hello","Hi","Well"]

// prints Hello,Hi,Yo yo yo

print("\(greetings.description)")

// prints HELLO,HI,YO YO YO

print("\(greetings.shoutyDescription)")

協議被命名為CustomStringConvertible 大多數的Foundation對象都遵循Printable協議,有了協議擴充,可以用自訂功能來擴充系統。

相比向很多類,結構體和枚舉添加少量的自訂代碼,你可以編寫一個通用實現,應用到不同的資料類型。

用過map    filter 的,可以認為以方法的方式比全域函數來使用它們更好。

已經有一些新的方法添加到集合類型。

map,filter,indexOf

et numbers = [1,5,6,10,16,42,45]

// swift 1

find(filter(map(numbers,{$0*2}),{$0%3 == 0}),90)

// swift 2

numbers.map{$0*2}.filter{$0%3 == 0}.indexOf(90) //return 2

 

  • Objective-C 泛型 – Apple已經開始標註所有的Objective-C代碼以便Swift類型能夠擷取正確類型的optional。使用Objective-C泛型也能正常工作,這樣給Swift開發人員更好的類型提示。如果你希望出現一些UITouch對象或字串數組,那就會出現你想要的而不是一些AnyObjects。
  • 重新命名 文法 – println已經離開我們一年了;現在它是普通舊的print,現在它有第二個參數的預設值設定為true來決定是否換行。do關鍵字主要用來錯誤處理,do-while迴圈現在是使用repeat-while。類似地,有很多協議名都改變了,例如:Printable改為CustomStringConvertible。
  • Migrator – 有很多小的文法改變,你怎樣使得你代碼變得最新?Swift 1-to-2 migrator會將代碼變成最新的標準和改變文法。這個migrator智能到能夠更新你的代碼使用新的錯誤處理,和更新塊注釋到新的格式風格!
  • 開源! – 對碼農有一個重大訊息就是在秋天發布Swift 2的時候,Swift將會開源!這意味著不僅可以使用它來iOS開發,更重要的是學習它的原始碼。不僅如此,這將是很好的機會來深入原始碼,甚至為項目貢獻代碼,然後在swift編譯器提交曆史上留下你的名字。
  • 文章引用自如下地址:O(∩_∩)O謝謝

http://ios.jobbole.com/82099/?from=groupmessage&isappinstalled=1

 

這隻是所有發布特性中的一些簡單樣本;想瞭解更多,請查看WWDC session videos和已更新的Swift Programming Language book

如果還有一些人記得在Swift第一個beta版和發布的1.0之間有很多改變,那麼將來肯定會有更多地特性出現。我們團隊將會持續關注所有的更新,深入挖掘令人興奮的改變,所以請密切留意教程,書籍和視頻。

swift 2特性記錄

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.