以前编写的代码,开发人员做了一个返回块的静态var?

时间:2018-05-22 01:24:54

标签: swift

我正在查看一些旧代码,并找到了这个

enum Environment: String {
    static var current: Environment = {
        return .Develop
    }()

我想知道为什么这样写,而不是:

enum Environment: String {
    static var current: Environment = .Develop

它们在功能上是否相同?事实上,enum内的变量是否会产生影响?

我相信我正在查看没有定义参数或返回类型的块,因此编译器很聪明并且确定返回类型是Environment,因此设置此阻止作为此var的初始值

有人有其他见解吗?我想将它更新为第二种方法,因为我相信它看起来更有意义

1 个答案:

答案 0 :(得分:3)

“块”未“返回”。 闭包已定义,并立即执行 ,返回.Develop,并保存到current

当您在变量初始化期间需要执行某些操作时,这非常有用,但在此期间,static var current: Environment = .Develop就足够了,而且更可取。