2017-07-25 18 views
1

私は、任意の最も近い数値に値を丸めるために、次のコードを持っている:私は同じを使用しているため、私は苦情次取得しかしカスタム関数と同じ名前の組み込み関数を呼び出す

func round(_ value: Double, toNearest nearest: Double) -> Double { 
    let roundedValue = round(value/nearest) * nearest 
    return roundedValue 
} 

このメソッドの名前は組み込みのものとして

Missing argument for parameter 'toNearest' in call 

これを回避する方法はありますか?すなわちbuiltin round(value/nearest)

ありがとうございました。

+1

あなたが '' Darwin.round(値/最寄)を試したことがありますか? – OOPer

+1

FYIシグネチャで区別される同じ名前の複数の関数を持つことは、関数オーバーロードと呼ばれます。 – Balanced

+0

関連:[Swift 3.0:ArrayまたはDictionary拡張モジュールでグローバル関数funcを(T、T)と呼び出すときのコンパイラエラー](https://stackoverflow.com/q/39602298/2976878)&[Xcode 8 Beta 4 Swift 3 - "round" behavior changed](https://stackoverflow.com/q/38767635/2976878) – Hamish

答えて

1

最もダーウィン/ Cの方法はFloatingPoint(例えばDoubleFloat)に準拠したタイプのために、今、ネイティブスウィフト方法として容易に入手可能である丸め。つまり、質問と同じロジックを使用して独自の丸めメソッドを実装するように設定されている場合は、.toNearestOrAwayFromZero丸めルールを使用するrounded() method of FloatingPointを使用できます。これは(リンクされた回答に記載されているように)ダーウィン/ C round(...)方法。カスタムround(_:toNearest:)機能修正する

応用:

func round(_ value: Double, toNearest nearest: Double) -> Double { 
    return (value/nearest).rounded() * nearest 
} 
+0

これは魅力的です。あなたの答えをありがとう。 – Alex

0

なぜ同じ名前が必要なのですか?roundTo()のように名前を変更することはできません。

異なるタイプまたはパラメータラベルを持つ限り、同じ名前の2つの関数を使用できます。パラメータを変更してみてください。次の答えに示すように

関連する問題