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