2015年7月13日 星期一

「swift」swift是啥

Swift,編譯式編程語言,由蘋果公司在2014年推出,用來撰寫OS XiOS應用程式。

2014年,在AppleWWDC所發布,設計Swift時,蘋果公司有意讓Swift與Objective-C

共存在蘋果公司的作業系統上。


記憶體管理[編輯]
Swift全面使用自動參照計數(ARC)來管理記憶體,取代過去Objective C的垃圾回收功能。

過去在Objective-C中,強參照(strong reference)即為非ARC中的retain,

而弱參照(weak reference)即為非ARC中的assign. 為了解決迴圈參照的問題,

Swift提供unowned, 不能設定為optional types,不能加上問號(?)或驚嘆號(!)。

除錯以及其他元素[編輯]

Xcode的除錯機制針對Swift語言提供REPL(Read-Eval-Print Loop, 

這是源自emacs的術語)環境,可以利用Swift語法來評估或與其他程式互動,

使Swift編程具有類似PythonRuby互動性介面(Interactive Shell)。

類似 Objective-C之處[編輯]

  • 基本數值型別(numeric types)大致相同 (例如Int, UInt, Float, Double)
  • 大量的C 運算元被移出Swift, 但又引入一些新運算元。
  • 大括號被用於群組陳述(group statements)。
  • 變數之賦值使用等於符號, 但比較則使用「連續兩個等於」(==)運算元。還有一個新的運算元,「連續三個等於」(===)被用來判斷常數或變數之間是否為同一物件之實例(instance)。
  • 中括號([], Square brackets)用於陣列的表示, 宣告陣例之後, 可以指派索引值(index)來進行元素(element)之存取。
  • 控制陳述(control statement), for, while, if, switch 與Ojbective-C都十分類似, 但有延伸功能, 像是 for in 用於集合(collection)的輪詢, switch 還可以接受非整數的cases條件值, 諸如此類。

不同於 Objective-C之處[編輯]

  • 陳述句(statement)不須再使用分號 (';')做為結束, 但分號還是可以在一行以內作為兩個以上陳述的分隔。
  • 標頭檔(Header files)不再需要。
  • 註解方式 /* ... */ 可以為巢狀(nested)註解, 意思是指註解內可以再有註解, 過去有些C或C++編譯器不支援巢狀註解。
  • 強型別(strong type)
  • 類型推論或隱含類型(Type inference)
  • 支援泛型編程
  • 函式為第一等類型(first-class object),這意味著函式可以作為其他函式的參數與返回值。
  • 運算元可在類別內重新定義 (運算元重載)。可以生成新的運算元。
  • 字串全方面支援 Unicode。某些字元甚至可以成為語言的名稱。
  • 許多C語言家族過去惡名昭彰的怪語法(error-prone behaviors)也被改變:
    • 不再存在指標
    • 指派(Assignments)不再回傳值。正確寫法是 if (i==0) ,一般容易誤寫成 if (i=0) 會造成編譯時期錯誤(compile-time error)。
    • switch 的區塊內不需要再使用 break 敘述句。另外, case後面都需要有可執行的代碼(C或C++可連續使用多個case而不需要額外的代碼), 否則會發生編譯錯誤。
    • 變數和常數都要被初始化,而且陣列(array)的界限也要確認清楚。
    • 溢位(overflows)的問題。C語言沒有強制整數型別(signed integers)的界限, 常常在執行時間發生問題。Swift可以透過整數型別的max或min屬性取得最大值或最小值。

資料來源:

沒有留言:

張貼留言