调用与自定义函数同名的内置函数

时间:2017-07-25 13:16:51

标签: swift rounding built-in

我有以下代码将值舍入到任何最接近的数字:

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)

感谢。

2 个答案:

答案 0 :(得分:1)

如下面的答案所示:

大多数Darwin / C舍入方法现在可以作为原生Swift方法使用,适用于符合FloatingPoint的类型(例如DoubleFloat)。这意味着如果您使用与问题相同的逻辑设置实现自己的舍入方法,则可以使用rounded() method of FloatingPoint,它使用.toNearestOrAwayFromZero舍入规则(如上所述)在链接的答案中)相当于Darwin / C round(...)方法。

已应用于修改自定义round(_:toNearest:)功能:

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

答案 1 :(得分:0)

为什么你需要相同的名字,你不能只是将它重命名为roundTo():p。

我相信你可以有两个同名的函数,只要它们有不同的类型或参数标签。尝试更改参数?