gpt4 book ai didi

swift - 闭包返回类型语法

转载 作者:可可西里 更新时间:2023-11-01 01:36:31 25 4
gpt4 key购买 nike

我在一个导致一些困惑的结构中有以下闭包。

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
}

为什么 swift 自动将我的实现更正为 (result) in 而不是 (Void) in

最佳答案

block 变量 response 应该采用类型为 Result 的单个参数,而不是 Void()。因此,Xcode 自动填充一个名为 result 的参数,表示一个 Result 对象。由于返回类型是 Void,因此可以简单地省略 -> 之后的任何内容。

更明确地说,它会写成:

..., response: { (result: Result<UserInfo>) -> Void in
})

为简单起见,转换为:

..., response: { (result) in
})

也可以省略参数周围的括号:

..., response: { result in
})

或使用 trailing closure syntax 更好:

RegisterRequest(userInfo: userInfo) { result in
...
}

如果您不希望该 block 采用任何参数,您可以将其类型定义为以下之一:

var response: (Void) -> Void
var response: () -> Void

关于swift - 闭包返回类型语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36827943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com