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

最近項目不是很忙,有了點兒閑余時間。所以打算開始自學一下水果公司的新語言- 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ā)一些類似的小想法,高手輕拍 ^_^

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

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

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

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