2
這是我在Swift中學習函數重載時編寫的完全人爲設計的例子。以下函數僅在返回類型中有所不同(第一個函數隱式返回Void
/()
,而另一個返回Int
)。如何消除重載函數
func foo(x:Int, y:Int) {
}
func foo(x:Int, y:Int) -> Int {
return 0
}
// Call the version which returns Int
let i: Int = foo(6, y: 7)
// Call the version which returns Void
let v: Void = foo(6, y: 7)
// Ambiguous
foo(6, y:7) // How can I force a call to the Void version without using let/var?
// I thought this might work but doesn't
foo(6,y: 7) as (Int, Int) -> Void
有沒有一種方法,我可以調用Void
版本不使用let
,即某種類型的演員? 同樣,我意識到這是一個人爲的例子,但我想了解這裏的選項。
我很想知道答案,但就實際做這個...不。這不是很可讀的代碼,如果一個函數簽名被改變/刪除,那麼或許事情可能會爆炸,而突然之間,那個舊函數調用網站調用「Int」函數。這裏是龍。 – Alexander
感謝您的回覆@AMomchilov,但正如我所說,我只是想了解這是如何工作的語法...我不會在生產代碼中使用它。 – RobertJoseph