我正在制作自定义运算符(≠,≈,∑,√
),并且平方根实现很有趣。我写了
prefix func √ (item:Double) -> Double {
return sqrt(item)
}
当您输入sqrt(
时,它有5个自动填充,其中2个返回Double。第二个会给您一个错误,如果您自动修复它会删除x:
。他们之间有什么区别,为什么自动完成中的第二个如果它不起作用?
答案 0 :(得分:1)
您在自动完成弹出窗口中看到的三件事是sqrt
函数重载 - 它们使用相同的函数名称,但使用不同的参数类型。这样您就可以记住sqrt
表示“平方根”并使用该名称,无论您使用的是Float
,Double
还是CGFloat
。 (这也意味着如果你想创建一个√
运算符作为`sort的别名,你需要创建它的三个版本。)
其他两个在自动完成弹出窗口中显示为sqrt(Double)
和sqrtf(Float)
,是导入的C API(可能还有其他三个sqrt
函数的底层实现)。那些可能不应该出现,所以我建议filing a bug。