sqrt(Double)和sqrt(x:Double)之间的差异

时间:2014-08-25 17:14:48

标签: autocomplete swift

我正在制作自定义运算符(≠,≈,∑,√),并且平方根实现很有趣。我写了

prefix func √ (item:Double) -> Double {
    return sqrt(item)
}

当您输入sqrt(时,它有5个自动填充,其中2个返回Double。第二个会给您一个错误,如果您自动修复它会删除x:。他们之间有什么区别,为什么自动完成中的第二个如果它不起作用?

1 个答案:

答案 0 :(得分:1)

您在自动完成弹出窗口中看到的三件事是sqrt函数重载 - 它们使用相同的函数名称,但使用不同的参数类型。这样您就可以记住sqrt表示“平方根”并使用该名称,无论您使用的是FloatDouble还是CGFloat。 (这也意味着如果你想创建一个运算符作为`sort的别名,你需要创建它的三个版本。)

其他两个在自动完成弹出窗口中显示为sqrt(Double)sqrtf(Float),是导入的C API(可能还有其他三个sqrt函数的底层实现)。那些可能不应该出现,所以我建议filing a bug