gpt4 book ai didi

ios - 快速,延迟加载的简短闭包形式

转载 作者:搜寻专家 更新时间:2023-11-01 05:57:03 29 4
gpt4 key购买 nike

我正在阅读 Apple 文档中的 Strong reference cycle for closure。下面是一个使用闭包的惰性变量声明:

lazy var asHTML: () -> String = {
if let text = self.text {
return "<\(self.name)>\(text)</\(self.name)>"
} else {
return "<\(self.name) />"
}
}

下面是Swift中闭包的语法

{(parameters) -> return type in
statements
}

它们看起来不一样,但我知道第一个 asHTML 是一种简短的闭包形式

谁能告诉我如何推导出简短形式的原始语法

最佳答案

声明如下

() -> String

这意味着闭包不接受任何参数,并在调用时生成一个字符串。此闭包强烈捕获变量 self 以便能够使用文本。

如果我们采用闭包定义

{(parameters) -> return type in
statements
}

上面的asHTML可以改写为

{ () -> String in
statements
}

或者

{ (Void) -> String in
statements
}

这与

相同
lazy var asHTML = asHTML()

func asHTML() -> String {
....
}

作为附加说明,您还可以将惰性 asHTML 声明重写为

lazy var asHTML: String = {
if let text = self.text {
return "<\(self.name)>\(text)</\(self.name)>"
} else {
return "<\(self.name) />"
}
}()

关于ios - 快速,延迟加载的简短闭包形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38099881/

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