最近項目不是很忙,有了點兒閑余時間。所以打算開始自學一下水果公司的新語言- Swift 。
大多介紹 Swift 的教程大約都會提到該語言借鑒了包括 Python、Ruby 在內(nèi)的眾多語言的語法和特性,所以如果你有這些流行語言的經(jīng)驗的話,一定會看到熟悉的部分。今天我不打算說那些相同的部分,而是說兩點和已有語言略略或是完全相反的語法。
1、Ruby 語言的小伙伴一定熟悉 .. 和 ... 這兩個范圍操作符。Swift 中也有,但是它只有 ... 而沒有 ..,同時 ... 的語義和在 Ruby 中的 .. 卻是相同的,表示包含結尾的元素。而對于 Ruby 中的 ... 它則用 .< 來表示。如:
// Ruby
a = [1, 2, 3, 4, 5]
a[0..3] ? ? ? => [1, 2, 3, 4]
a[0...3] ? ? ?=> [1, 2, 3]
// ?Swift
var a = [1, 2, 3, 4, 5]
a[0...3] ? ? ? => [1, 2, 3, 4]
a[0.<3] ? ? ?=> [1, 2, 3]
我不得不說這種語法對于想擁抱 Swift 的 Ruby 程序員可是不夠友好啊。
2、對于 Golang 程序員來說,我要說的是把這兩個點兒立起來的話...對,我說的就是冒號 :用來表明類型推斷(type inference )的時候。Golang 和 Swift 都支持類型推斷,但是 Golang 是在需要編譯器幫助確定類型時加 :,Swift 則恰恰相反,在顯式的聲明類型時需要加 :,需要編譯器確定時則不加。如:
// Golang
var s string ? ? ? ? ? ? ? ? ? ? ?// 顯式的聲明
s := "I love Golang!" ? // 需要類型推斷
// Swift
var s : String ? ? ? ? ? ? ? ? ?// 顯式聲明
var s = "I love Swift" ? // 需要類型推斷
所以這個寫法對 Gopher 也不夠友好啊。
Swift 語法還在學習中,以后會隨時發(fā)一些類似的小想法,高手輕拍 ^_^