掀起你的蓋頭來——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)以及引數型別,在方法呼叫裡會用到外部引數名,區域性引數名是用在方法體內的。