【发布时间】:2018-02-24 16:11:56
【问题描述】:
我有一个未初始化的惰性变量:
lazy var time: () -> String = {
return String(describing: Date())
}
每当我拨打time() 时,我都会收到一个新日期。所以看起来它的行为完全像:
var time: () -> String {
return {
return String(describing: Date())
}
}
在这种情况下,只使用惰性闭包是不好的做法,因为这样我就不必连续写两个return-statements 或者我错过了什么?
【问题讨论】:
-
你的
lazy var time被初始化一次 - 一个闭包,当被调用时,返回一个带有当前日期的字符串。 -
@MartinR 那么在这种情况下,由于闭包的内容仍然是动态的,所以它基本上是一个我可以传递的函数?
-
为什么不直接说
func time() -> String { return String(describing: Date()) }? -
函数 是 Swift 中的闭包。 – 您真正想要实现的行为是什么?
-
@Hamish 好吧,我的原始代码示例有点复杂。闭包必须传递并存储在数组中。所以一个普通的变量是不够的。
标签: swift closures lazy-initialization