我有以下功能:
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)
我怎样才能解决歧义?
一个有趣的问题!我认为目前还不能,因为参数名称似乎不是函数引用名称的一部分,尽管我无法从 Apple 的参考文档中找到任何明确规定这一点的内容。
当然,对于这个特定的示例,您可以使用
exec({ moveThing($0, toLeft: $1) } )
exec({ moveThing($0, toRight: $1) } )
Run Code Online (Sandbox Code Playgroud)
但我通过简化的示例明白了您的需求。
| 归档时间: |
|
| 查看次数: |
379 次 |
| 最近记录: |