2014-12-18 59 views
-8

我看到this page以下斯威夫特例如:爲什麼Swift語法看起來不夠簡潔?

func jediGreet(name: String, ability: String) -> (farewell: String, words: String) { 
    return ("Good bye, \(name)", " May the \(ability) be with you.") 
} 

圍棋的等效版本如下:

func jediGreet(name string, ability string) (farewell string, words string) { 
    return "Good bye, " + name, " May the " + ability + " be with you." 
} 

顯着不同之處包括:

  1. 在第一行,我們刪除全部:->
  2. 在第二行中,我們刪除了()

Q/A解釋說,斯威夫特需要:的原因,不過,它看起來像->()是多餘的。

他們真的沒有必要嗎?如果是這樣,是不是因爲一些智力問題,所以蘋果不能採用簡潔的語法,因爲Go已經有了?

[是的,我注意到Go版本的第二行實際上比Swift版本的第二行更長。感謝Swift的\(param)語法。]

+0

有趣的看到否定沒有任何答案。 – cxwangyi 2014-12-18 23:51:05

+1

反對票的原因是SO是QA平臺,而不是此類討論的論壇。我認爲這很有趣,也認爲Swift的一些語法是 - 非常荒謬。但討論這裏並不是最好的地方。 – 2014-12-19 00:33:16

+0

@ThomasKilian我看到了,我同意,對於這樣的問題,stackoverflow並不是一個好地方。我非常感謝Go作者的維護良好的FAQ和Google Group。我正在轉向Swift Google Group。 – cxwangyi 2014-12-19 01:51:51

回答

2

這是一個非常有見地的問題,但Swift簡單,簡潔並且可讀。 Apple選擇了語法,因爲Swift深受Rust的啓發。斯威夫特被設計爲可讀,因此->讀取「返回」。這是一個函數在Rust中的外觀:

fn multiply_by_two(x: int) -> int { 
    return x * 2i 
} 

您提供的兩個語句之間有一個主要區別。 swift中的()是必要的,因爲它是一個元組。 Go中沒有使用它們的原因是因爲Go支持與元組不同的多種返回類型。

+0

感謝您指向Rust。這是信息!我試圖認識到元組引入的重要性。 – cxwangyi 2014-12-19 01:59:02

相關問題