Swift程式設計語言初探

來源:互聯網
上載者:User

標籤:作者   rect   class   dex   world   parameter   種類   運算式   存在   

    繼WWDC2014後,新的程式設計語言Swift浮出水面。它具有高速、現代、安全、可互動等特徵,而且其文法簡單,入門門檻低,有望替代文法複雜難懂的Objective-C語言。據其作者Chris Lattner在部落格上聲稱,該語言開發僅僅用了4年時間。而且底層架構基本上都是由其一人開發完畢。

    依照慣例,先用Swift來編寫一個簡單的"Hello World"

println("Hello World")

    沒錯,就這麼簡單,沒有IMPORT語句,沒有main函數,也沒有@符號,分號也不是必須的。編譯執行能夠看到控制台列印的Hello World字樣。

    這裡的println是全域函數,負責列印參數內容,並換行。

    Swift能夠說是融合其它優秀程式設計語言的結果,因此很多文法都和其它語言存在共同之處。

以下將簡介一下該語言的一部分內容:

    1. Swift用var聲明變數,用let聲明常量。如

var legs = 4               // 變數legslet PI = 3.1415926    // 常量PI
    那麼legs和PI究竟是什麼類型呢?答案是Type Inference(類型猜測)。由於這兩個語句在聲明的同一時候而且初始化,由於4是Int類型。因此猜測變數legs為Int類型。同理。3.1415926為Double類型,因此猜測PI為Double類型。

也能夠強制規定類型:

var legs:Intlet PI:Double
    若legs變數是整數類型,僅僅需在變數名後加入冒號,緊接著尾隨一個類型名就可以。

    2. 賦值運算子沒有傳回值。而在其它一些語言中。賦值運算子返回的是變數的值。(如 a = 5 運算式返回5),而作為新手在做條件推斷時,經經常使用賦值運算子來取代"=="。導致一些非常難發現的邏輯錯誤,而在Swift中不會出現這樣的情況,由於這是一個語法錯誤。在編譯期間會給出錯誤資訊,如 if a = 5 { ... } ,if接受的是一個Bool值,而a = 5沒有傳回值,因此會出錯。

/* In C++ */int a = 1;if(a = 5) { ... }  // Compile Success/* In Swift */var a = 1if a = 5 { ... }   // Compile error// if a == 5 {...} This is correct one

    3. switch語句的case後不用加break。

這也是其它語言新手常常犯的一個錯誤,而在Swift中,switch選擇的case語句運行完成後馬上跳出switch語句,而不會由於語句後沒有break繼續運行後面的case或者default語句。

var a = 1switch a { case 1: println(1) case 2: println(2) default: println(3)}// no break at all

    4.  能夠用n..m 或者 n...m 取代一個數組,比方:

for index in 0 ..< 3 { println(index) }// 0// 1// 2
 ..代表前閉後開。...代表前後都閉合,所以0..3代表數組[0,1,2],而0...3代表[0,1,2,3]

  5. 怎樣在字串中插入變數或常量呢?Swift提供一個特殊的文法:

var number = 5println("I got \(number) books")// I got 5 books
    是不是非常easy。僅僅需在字串中用\(和)包裹你要插入的變數或常量就可以。

    6. 在Swift中,存在兩種類型,一種是參考型別(reference type),一種是實值型別(value type),class是參考型別。而enumeration和struct是實值型別,它們的一個重要差別是傳遞的方式不一樣,一個是傳遞副本,一個是傳遞本身。

    在Swift中,class的樣子是:

class Vehicle {    var wheels:Int?    var maxPassengers:Int?    func description() -> String {        return "This vehicle has \(wheels!) wheels,max passengers is \(maxPassengers!) " }    init(withWheels wheels:Int,andMaxPassengers maxPassengers:Int) {        self.wheels = wheels        self.maxPassengers = maxPassengers }    deinit { }}
    該類名為Vehicle,聲明了兩個屬性,wheels和maxPassengers。以及一個執行個體方法description,該方法沒有參數,傳回值為字串類型。同一時候。該類提供一個初始化方法。init是keyword,該方法接受兩個參數,代表之前聲明的兩個屬性。該參數包含三個部分,各自是外部參數名(external parameter name)。局部參數名(local parameter name)以及參數類型,在方法調用裡會用到外部參數名,局部參數名是用在方法體內的。引進這樣的方法的優點是繼承Objective-C的優良特性,使程式碼片段更像一個句子,更富有描寫敘述性。以下來看看怎樣使用這個類:

var porsche = Vehicle(withWheels:4,andMaxPassengers:5)println(porsche.description())// This vehicle has 4 wheels,max passengers is 5
    另外在類的屬性中,?代表optional。即該屬性要麼有值。要麼沒有值(nil)。


    Swift的文法文檔見:http://download.csdn.net/detail/czjuttsw/7450821





    

Swift程式設計語言初探

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.