gpt4 book ai didi

swift - 带有花括号和圆括号的 block 如何工作?

转载 作者:IT王子 更新时间:2023-10-29 05:49:00 24 4
gpt4 key购买 nike

let loginRegisterButton:UIButton = {
let button = UIButton(type: .system)
button.backgroundColor = .white
button.setTitle("Register", for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
button.setTitleColor(.white, for: .normal)
return button
}()

这个是变量还是函数,为什么有返回值?我们为什么这么调用它?没有 parenthesis 它就不能工作,为什么?

最佳答案

这是在同一地点创建和使用的闭包。当您不能将所有内容都放在一个表达式中时,您可以使用它进行初始化。此功能在创建只读(let,而不是 var)字段时很有用。

在上面的例子中,代码创建了一个按钮,然后在返回结果之前对其进行额外的配置。这是将代码从 init 移动到靠近初始化位置的代码块中的好方法。

可视化正在发生的事情的一种方法是考虑一个做同样事情的命名函数:

func makeWhiteButton() -> UIButton {
let button = UIButton(type: .system)
button.backgroundColor = UIColor.White
button.setTitle("Register", for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
button.setTitleColor(.white, for: .normal)
return button
}

现在你可以在初始化器中使用它了

let loginRegisterButton:UIButton = makeWhiteButton()

您帖子中的代码使用匿名“关闭”函数执行相同的操作。闭包 block 后面的括号与上面 makeWhiteButton 后面的括号的原因相同。

关于swift - 带有花括号和圆括号的 block 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39612964/

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