我在结构中有以下关闭,这会引起一些混乱。
var response: (result: Result<UserInfo>) -> Void
struct RegisterRequest: Requestable
{
let userInfo : [String:AnyObject]
var response: (result: Result<UserInfo>) -> Void
}
现在,当我尝试实现它时,我有以下几点:
let register = RegisterRequest(userInfo: userInfo, response: { (result) in
})
如果闭包语法为
{ (params) -> returnType in
statements
}
为什么快速将我的实现自动更正(result) in
为(Void) in
块变量response
应采用一个类型为Result
,不是Void
或的单个参数()
。因此,Xcode自动填充名为result
代表Result
对象的参数。由于return type为Void
,之后的任何内容都->
可以简单地省略。
更明确地说,它将写为:
..., response: { (result: Result<UserInfo>) -> Void in
})
为了简单起见,将其转换为:
..., response: { (result) in
})
围绕参数的括号也可以省略:
..., response: { result in
})
或使用结尾闭包语法更好:
RegisterRequest(userInfo: userInfo) { result in
...
}
如果您不希望该块采用任何参数,则可以将其类型定义为以下之一:
var response: (Void) -> Void
var response: () -> Void
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句