明示スウィフト延長でElementオブジェクトを初期化する他の方法があるのだろうか?スウィフト拡張と「要素」明示的な初期化
私はこれをやりたいが、私はexpectedSum割り当てに強制要素鋳造を削除し、コンパイラの使用を許可すれば非公称型「Elementは」もちろん、明示的な初期化extension Array where Element: Numeric {
func findDuplicate() -> Int {
guard self.count > 0 else { return -1 }
let sum = self.reduce(0, +)
let expectedSum = Element((self.count - 1) * self.count/2)
return sum - expectedSum
}
}
をサポートしていません例えば
Intが、私は、私は簡単にこれは、このようにしていない、より汎用的であるところの要素==のIntもちろんでの作業私の拡張子を持つことができ、エラー比較合計(要素)を取得し、expectedSum(INT)
。
ヒントNumeric
タイプの整数の
まず、あなたの配列が空であるかどうかを確認するために、カウントプロパティを使用しないでください。 2番目の引数は、-1を返す代わりに戻り値の型をオプションにします。あなたの方法は何をすべきか? –
Intを返す場合は、汎用とすることが目的です。 ? '要素を返す'と '使用BinaryInteger'や'代わりNumeric' –
それは、上記のアルゴリズムを実装してどのように非常に不明確だ 'のFloatingPoint'「重複を見つけます。」戻り値の意味は何ですか?なぜそれは整数ですか(それはどのように "重複"ですか)?この場合、「明示的に初期化する」とはどういう意味ですか? 'Numeric'は' BinaryInteger'から変換するための 'init?(exactly:)'を含みます( 'count'は常に' Int'ですので、適用されます)。しかし、このコードが何を意味するのかは非常に不明です。 –