Swift 對比學習 (一)

Swift相對Objective-C來講,有過之而無不及,並與Objective-C無縫混編,可謂利器。在Swift中能夠看到不一樣的編程語言的影子,天下語言一大抄,這樣也好,減低了不一樣語言的學習成本。javascript

let 和 var,相比只有var的語言多了個選擇,若是變量的值不會被修改,那就用let吧,意圖更加明確。java

var sideLength: Double ,Pascal也是這樣聲明變量類型,TypeScript也是這樣乾的,仍是比較好接受的。編程

行尾不用加分號(固然你要非得加也不錯),一返C語言家族的常態,也許學Pascal多些?數組

getter,setter你們已經習覺得常了,C#,Java都有,不過willSet,didSet確頗有新意。app

enum Rank: Int 
{ 
 case Ace = 1
 case Tow, Three, Four
 case Jack, Queen, King
}

枚舉成員用case聲明仍是頗有趣的編程語言

protocol等同於C#的interface;extension基本上至關於C#的擴展方法,但更強大些,能夠擴展示有類去實現特定的protocol.ide

泛型,C#早已有之,Java也棄暗投明,話說它們的祖宗是否是C++的template呀?函數

println完美替代NSLog, 字符串插值(string interpolation)也很給力,C#6聽說也有了?學習

元組(tuples)仍是很方便實用的,C#目前只能藉助類庫實現相似功能。編碼

optionals基本等同於C#的nullable類型,就是叫法不同,還寫法都同樣。不過Swift裏多了個隱式解析可選(implicity unwrapped optionals),用!標記,第一次付值以後,就不用再判斷空了,能夠直接看成聲明的類型使用。

基本運算符與C基本相同,多了個浮點求餘?

區間運算符,明顯Pascal系列的,C系列好像有人這樣用過,好東西仍是值得學習的。它還分區間(...)和半區間(..)

字符串,Unicode編碼,轉意寫法與C相同。

數組,與C#類似,使用Array<SomeType>類型,SomeType[]爲簡單寫法。數組支持+=和區間運算符仍是帶來很多方便。

for-in 與C#的foreach無異

Dictionary<KeyType, ValueType>就按.NET裏的Dictionary<K,V>來用吧,差不了多少。

都看到這裏了,還有見到Swift中用到new,莫非new跟本就不是關鍵字?

func 方法定義

關聯值(Associated Values),第一眼看上去最不理解的東西,不過又好像頗有用的樣子? 它能夠把一個常量或變量值與一個枚舉值關聯起來,使用時能夠經過枚舉值直接獲取相關聯的常量或變量值。

class 和 struct 與C#差很少,不過成員沒有private,public的說道,有類型方法(Type Methods)就是C#的static method,Swift中用class func表示,類靜態成員仍是用static, 不太make sense啊?

類的構造函數用init(),構造函數的參數很奇特,份內部名和外部名(爲了對應ObjectiveC?),可使用convenience init()內部調用其它構造函數(如:self.init(name:"[Unnamed]"))繼承用冒號,調父類成員用super, 能夠override 方法,屬性或屬性觀察器(Property Observer), @final能夠防止重寫.

反初始化(deinit)? (神命名啊),就按C#的Dispose()理解吧。

恆等運算符(===, !==) 學javascript的?

 

今天就先看這些吧,以上內容純屬現學現賣,若有錯誤望指正。

相關文章
相關標籤/搜索