Swift: 未初始化 returns 关闭的惰性变量
Swift: Not initialised Lazy Variable that returns Closure
我有一个惰性变量未初始化:
lazy var time: () -> String = {
return String(describing: Date())
}
每当我打电话给 time()
时,我都会得到一个新的约会对象。所以看起来它的行为就像:
var time: () -> String {
return {
return String(describing: Date())
}
}
在这种情况下,仅使用惰性闭包是否是不好的做法,因为这样我就不必连续写两个 return
语句,或者我会错过什么吗?
您不需要连续两个 return 语句,也不需要延迟关闭。为什么不这样做:
let time: () -> String = {
return String(describing: Date())
}
或者只是用一种方法替换这整个东西:
func time() -> String {
return String(describing: Date())
}
您可能希望在此处使用闭包的一个原因是您希望代码的其他部分更改闭包的值。如果是这样的话,就像第一个代码片段那样做,否则我认为没有什么能阻止你编写方法。您可以像传递闭包一样传递方法,因为方法是一种闭包!
当初始化惰性变量需要大量资源时,确实需要惰性变量。创建闭包往往很便宜。
我有一个惰性变量未初始化:
lazy var time: () -> String = {
return String(describing: Date())
}
每当我打电话给 time()
时,我都会得到一个新的约会对象。所以看起来它的行为就像:
var time: () -> String {
return {
return String(describing: Date())
}
}
在这种情况下,仅使用惰性闭包是否是不好的做法,因为这样我就不必连续写两个 return
语句,或者我会错过什么吗?
您不需要连续两个 return 语句,也不需要延迟关闭。为什么不这样做:
let time: () -> String = {
return String(describing: Date())
}
或者只是用一种方法替换这整个东西:
func time() -> String {
return String(describing: Date())
}
您可能希望在此处使用闭包的一个原因是您希望代码的其他部分更改闭包的值。如果是这样的话,就像第一个代码片段那样做,否则我认为没有什么能阻止你编写方法。您可以像传递闭包一样传递方法,因为方法是一种闭包!
当初始化惰性变量需要大量资源时,确实需要惰性变量。创建闭包往往很便宜。