2016-12-17 9 views
0

これら二つの方法にあるない(同じ名前が異なる外部パラメータ名)、オーバーロードを追加:同じ名前で外部パラメータ名が異なる複数の関数がコンパイルエラーを生成するのはなぜですか?

func add (x:Int, y:Int) -> Int { 
    return x+y 
} 

add(x: 1,y: 2) 
add(x: 4,y: 2) 

func add (_ x:Int, _ y:Int) -> Int { 
    return x+y 
} 

add(4,5) // Delete this, and the error goes away 

func add (addend1 x:Double, addend2 y:Double) -> Double { 
    return x + y 
} 

add(addend1: 1.1, addend2: 2.2) // But the error is flagged here 
add(addend1: 3.3, addend2: 4.4) // and here 

のXcode 8.2ベータ版(8C30a)遊び場フラグ最後の2行で:

式タイプを " Int 'は文脈がなくてもあいまいです

外部パラメータ名がすべて異なるため、これはあいまいではありません。それでも、これはSwift Compile Errorと表示されますが、Expression領域では3.3と7.7と評価されます。コンパイルしていますが、まだコンパイルしていませんか?

これはXcodeのバグですか?

+6

あなたのコードは、私のXcode 8.2 final(8C38)でコンパイルされます。ベータ版のバグであるか、問題の原因となっているものがあります。あなたは他に何もない新しいプロジェクトでそれを試しましたか? –

+0

元の投稿を編集して、エラーを再現したより良い仕事をしました。 – MikeJfromVA

+0

XCode 8.2 8C38を使用して同じコードからエラーが発生します。 – MikeJfromVA

答えて

1

私にはコンパイラのバグのようです。私はAppleとbug reportを提出することをお勧めしたい

func add (x:Int, y:Int) -> Int { 
    return x+y 
} 

func add (_ x:Int, _ y:Int) -> Int { 
    return x+y 
} 

func add (addend1 x:Double, addend2 y:Double) -> Double { 
    return x + y 
} 

add(x: 1,y: 2) 
add(x: 4,y: 2) 

add(4,5) 

add(addend1: 1.1, addend2: 2.2) 
add(addend1: 3.3, addend2: 4.4) 

:コードを再配置することで問題を修正しました。

+0

アップルに提出されたバグ。 – MikeJfromVA

関連する問題