// Assume you have two functions.
// Swift considers these functions as distinct
func cars(left look: String) {}
func cars(right look: String) {}
// How can I store them in a variable for later use?
let c: (left : String) -> () = cars
let c2: (right : String) -> () = cars
字符串
当我试图将这些方法存储到一个变量中时,我得到一个错误,指出“汽车”是不明确的。我该怎么做才能区分它们呢?
4条答案
按热度按时间qcbq4gxm1#
你必须帮助编译器决定你想要哪个函数,因为它在决定一个函数的签名是否对赋值有效时并不区分参数名。
您可以通过指定参数名称来消除意图的歧义
字符串
rqdpfwrv2#
你的两个函数有相同的一组参数string。为了能够有一个多态函数,每个函数必须有一组不同的parameter types。
字符串
你可以通过添加左和右描述来摆脱编译器,这是Roll-C的首选风格,但不是Swift。
gmol16393#
如果您已经有两个同名函数,并且无法更改
字符串
你需要把它们存储到两个变量中,你可以按照这个方法
型
正如你所看到的,我创建了两个闭包,它们分别调用第一个和第二个函数。
测试
型
bvn4nwqk4#
字符串