我正在查看一些旧代码,并找到了这个
enum Environment: String {
static var current: Environment = {
return .Develop
}()
我想知道为什么这样写,而不是:
enum Environment: String {
static var current: Environment = .Develop
它们在功能上是否相同?事实上,enum
内的变量是否会产生影响?
我相信我正在查看没有定义参数或返回类型的块,因此编译器很聪明并且确定返回类型是Environment
,因此设置此阻止作为此var的初始值
有人有其他见解吗?我想将它更新为第二种方法,因为我相信它看起来更有意义
答案 0 :(得分:3)
“块”未“返回”。 闭包已定义,并立即执行 ,返回.Develop
,并保存到current
。
当您在变量初始化期间需要执行某些操作时,这非常有用,但在此期间,static var current: Environment = .Develop
就足够了,而且更可取。