【发布时间】:2016-03-08 16:21:50
【问题描述】:
我有一个 Swift 程序会产生我无法理解的编译器错误。它归结为以下代码片段。
A 类是一个辅助类,在初始化时提供了一个稍后将调用的处理函数。这个函数有一个A 对象作为参数。
B 类初始化一个 A 类型的对象,并有一个函数 f 应该用作处理程序。或者,可以提供一个匿名代码块(闭包)。
class A {
init(_: (A) -> Void) {}
}
class B {
let a = A(f)
func f(a: A) {}
}
这会产生以下编译器消息:
error: cannot convert value of type 'B -> (A) -> ()' to expected argument type '(A) -> Void'
let a = A(f)
^
Void 和 () 是等价的,我想。
我什至不理解带有双 -> 的类型表达式。这是什么类型的?
谁能解释这里出了什么问题?还有,怎么做才对?
【问题讨论】: