Swift 對比學習 (一)

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

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

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

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

getter,setter大家已經習以爲常了,C#,Java都有,不過willSet,didSet確很有新意。

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

枚舉成員用case聲明還是很有趣的

protocol等同於C#的interface;extension基本上相當於C#的擴展方法,但更強大些,可以擴展現有類去實現特定的protocol.

泛型,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的?

 

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章