微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有以下功能

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) } )

但是我用简化的例子看到了你的意思.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐