Autocomplete sqrt(双精度)和sqrt(x:双精度)之间的差异

Autocomplete sqrt(双精度)和sqrt(x:双精度)之间的差异,autocomplete,swift,Autocomplete,Swift,我正在制作自定义运算符(≠,≈,∑,√)和平方根实现非常有趣。我写 prefix func √ (item:Double) -> Double { return sqrt(item) } 当您键入sqrt时,它有5个自动完成(,其中2个返回双精度。第二个返回给您一个错误,如果您自动修复它,它将删除x:。它们之间有什么区别,如果不起作用,为什么第二个返回在autocomplete中?您在autocomplete弹出窗口中看到的三件事情是sqrt函数重载——它们使用相同的函数名称,但

我正在制作自定义运算符(
≠,≈,∑,√)和平方根实现非常有趣。我写

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

当您键入
sqrt时,它有5个自动完成(
,其中2个返回双精度。第二个返回给您一个错误,如果您自动修复它,它将删除
x:
。它们之间有什么区别,如果不起作用,为什么第二个返回在autocomplete中?

您在autocomplete弹出窗口中看到的三件事情是
sqrt
函数重载——它们使用相同的函数名称,但不同的参数类型。通过这种方式,您可以记住
sqrt
表示“平方根”,并使用该名称,无论您是使用
Float
Double
还是
CGFloat
数字。(这还意味着如果您要创建
operator作为'sort'的别名,您需要创建它的三个版本。)


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

好的,但是为什么autocomplete认为
x:Double
sqrt(
?也
sqrt(Double))的可行参数
是有效的,所以这不是一个bug。奇怪的是,删除文件开头的
导入基础
,所有sqrt函数都会消失。用于autocomplete的蓝色椭圆形占位符文本Xcode inserts来自函数的声明——它告诉您可以作为参数插入什么类型的值。但它只是用于替换的占位符文本;它不意味着作为参数逐字插入。当删除“<代码>导入”/COD>语句时,函数消失。这并不奇怪。<代码> Sqr> < /C>和朋友定义在<代码>达尔文< /C>模块中,该模块包含所有基本UNIX API,并由基础传递。