我具有以下功能:

func moveThing(thing: AnyObject, toLeft length: Int) {}
func moveThing(thing: AnyObject, toRight length: Int) {}

但是,当我将其中一个函数作为参数传递时,编译器会提示“'moveThing'的歧义使用”
func exec(function: (AnyObject, Int) -> ()) {}
exec(moveThing) // Apparently ambiguous
exec(moveThing as (AnyObject, toLeft: Int) -> ()) // Still ambiguous

我该如何解决歧义?

最佳答案

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

当然,对于此特定示例,您可以使用

exec({ moveThing($0, toLeft: $1) } )
exec({ moveThing($0, toRight: $1) } )

但是通过简化的示例,您将了解您的需求。

10-08 17:48