代码之家  ›  专栏  ›  技术社区  ›  A O

在以前编写的代码中,开发人员生成了一个返回块的静态变量?

  •  3
  • A O  · 技术社区  · 7 年前

    我在看一些旧代码,发现了这个

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

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

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

    它们的功能相同吗?它是一个变量 enum 有什么区别吗?

    我认为我正在寻找一个没有定义参数或返回类型的块,因此编译器很聪明,并确定返回类型是 Environment ,因此可以将该块设置为该var的初始值。

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

    1 回复  |  直到 7 年前
        1
  •  3
  •   Alexander    7 年前

    “块”不是“返回”。这个 关闭 定义并执行 立即 ,返回 .Develop ,保存到 current .

    当您需要在变量初始化期间发生一些事情时,这是很有用的,但是在这里, static var current: Environment = .Develop 足够,而且更好。