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
私はlet
、キャストのすなわち、いくつかのタイプを使用せずにVoid
バージョンを呼び出すことができる方法はありますか? もう一度、私はこれが人為的な例であることを認識していますが、ここでそのオプションを理解したいと思います。
私は答えを知りたいのですが、これを実際に行っている限り...しないでください。それは非常に読みやすいコードではなく、ある関数のシグニチャが変更/削除され、その関数の古い呼び出しサイトが突然 'Int'を呼び出すと、事態が爆発する可能性があります。ここは龍です。 – Alexander
応答@AMomchilovをありがとう、私が言ったように、私はちょうど構文的にどのように動作するかを理解しようとしています...私は実動コードでは使用しません。 – RobertJoseph