1. 程式人生 > >掀起你的蓋頭來——Swift語言

掀起你的蓋頭來——Swift語言

蘋果在今年的 WWDC 大會上推出了Swift程式語言,它是一門博採眾長的現代語言。蘋果的目的很明顯,就是要讓 Swift 替換 Objective-C。Swift 很簡單,學起來也很容易,所以它有望成為示教程式設計的預設語言,其功能之強大可以滿足任何企業變成要求。Swift具有快速、現代、安全、可互動等特徵,並且其語法簡單,入門門檻低,有望替代語法複雜難懂的Objective-C語言。

     為了初步瞭解Swift語言的特點,我們寫了一些簡單的示例程式碼,從這些程式碼我們可以一窺其面目。

【HelloWorld】

?
1 println("Hello World"

     有人可能要說,這行程式碼是否少分號了?不是這樣的,在Swift裡分號是可寫可不寫的!也沒有IMPORT語句、main函式,也沒有@符號。編譯執行可以看到控制檯列印的Hello World字樣。這裡的println是全域性函式,負責列印引數內容,並換行 。

【宣告變數和常量】

?
1 2 var legs = 4  // 變數legs let PI = 3.1415926    // 常量PI  

     legs為變數,PI是常量,它們到底是什麼型別呢?答案是Type Inference(型別推測),由於這兩個語句在宣告的同時並且初始化,因為4是Int型別,因此推測變數legs為Int型別,同 理,3.1415926為Double型別,因此推測PI為Double型別。也可以強制規定型別:

?
1 2 var legs:Int //legs被強制規定為整型 let PI:Double  //PI被強制規定為浮點數型別

【switch語句】

     switch語句的case後不用加break。弱你在其它一些語言中不寫break,那可就大錯特錯了!而在Swift中,switch選擇的case語句執行完畢後立即跳出switch語句,而不會因為語句後沒有break繼續執行後面的case或者default語句

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

【陣列】

可以用n..m 或者 n...m 代替一個數組,比如:

?
1 for index in 0..3 { println(index) }  

..代表前閉後開,...代表前後都閉合,所以0..3代表陣列[0,1,2],而0...3代表[0,1,2,3]

【定義一個類 Class】

     在Swift中,存在兩種型別,一種是引用型別(reference type),一種是值型別(value type),class是引用型別,而enumeration和struct是值型別,它們的一個重要區別是傳遞的方式不一樣,一個是傳遞副本,一個是傳遞本身

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <span>class Vehicle {  </span>          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是關鍵字,該方法接受兩個引數,代表之前宣告的兩個屬性。該引數包括三個部分,分別是外部引數名(external parameter name),區域性引數名(local parameter name)以及引數型別,在方法呼叫裡會用到外部引數名,區域性引數名是用在方法體內的。