如何消除仅在Swift中的参数名称中的差异消除歧义的功能

Guo*_*ang 6 swift

我有以下功能:

func moveThing(thing: AnyObject, toLeft length: Int) {}
func moveThing(thing: AnyObject, toRight length: Int) {}
Run Code Online (Sandbox Code Playgroud)

但是,当我将其中一个函数作为参数传递时,编译器会抱怨"不明确地使用'moveThing'"

func exec(function: (AnyObject, Int) -> ()) {}
exec(moveThing) // Apparently ambiguous
exec(moveThing as (AnyObject, toLeft: Int) -> ()) // Still ambiguous
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决歧义?

Tee*_*ppa 0

一个有趣的问题!我认为目前还不能,因为参数名称似乎不是函数引用名称的一部分,尽管我无法从 Apple 的参考文档中找到任何明确规定这一点的内容。

当然,对于这个特定的示例,您可以使用

exec({ moveThing($0, toLeft: $1) } )
exec({ moveThing($0, toRight: $1) } )
Run Code Online (Sandbox Code Playgroud)

但我通过简化的示例明白了您的需求。