我具有以下功能:
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) } )
但是通过简化的示例,您将了解您的需求。