2015-10-22 102 views
3

Swift文檔清楚地說。Swift初始化不返回值?

與Objective-C初始值設定項不同,Swift初始值設定項不返回 值。

請解釋下面的語法。

let instanceOfString = String() 

它通過調用初始化程序並返回它來初始化一個String對象。值分配給instanceOfString。不是嗎?

回答

5

swift文檔是指類型的init方法的語法。

的語法在簽名省略了返回類型和方法通常不包含return語句:

init() { 
} 

顯然一個初始化(String())的調用並返回一個值。與Objective-C的不同之處在於純Swift類型中的init方法不能自由地返回與該方法的目標不同的對象 - 它始終是目標類型的隱式分配實例。

唯一的例外是可以在可分段的初始化程序中返回nil

+1

Objective C引入了一個特性,通過使返回類型爲'instancetype'來將返回類型鎖定爲目標類型。 – MadNik

+1

@MadNik你仍然可以返回派生類型。在Swift中這是不可能的 - 你甚至不能返回完全相同類型的不同實例。 –

+0

是的。偉大的一點。這使答案完整。 – MadNik