Swift 中那些“倒行逆施”的語法

最近項(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ā)一些類似的小想法,高手輕拍 ^_^

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 4,115評(píng)論 0 6
  • 2014年的蘋果全球開發(fā)者大會(huì)(WWDC),當(dāng)Craig Federighi向全世界宣布“We have new ...
    yeshenlong520閱讀 2,405評(píng)論 0 9
  • 關(guān)于 Swift 重要這個(gè)文檔所包含的準(zhǔn)備信息, 是關(guān)于開發(fā)的 API 和技術(shù)的。這個(gè)信息可能會(huì)改變, 根據(jù)這個(gè)文...
    無灃閱讀 4,634評(píng)論 1 27
  • 人無可比性 樹上每一片葉子都是相似的,每一片葉子又都是不同的。蕓蕓眾生也是各有特色,各有所長。他有統(tǒng)帥三軍之才,你...
    張一朵閱讀 158評(píng)論 0 0
  • 對(duì)于某事件發(fā)展的深度需求探知: 事件經(jīng)過:小明前幾天被小王批評(píng)了,小明有怨氣,這天跟小李微信聊天并且有挑釁一些小王...
    家有為熊楠閱讀 696評(píng)論 2 2

友情鏈接更多精彩內(nèi)容