swift – Lazy Var vs Let

前端之家收集整理的这篇文章主要介绍了swift – Lazy Var vs Let前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想对Swift中的一些属性使用Lazy初始化.
我当前的代码如下所示:
lazy var fontSize : CGFloat = {
  if (someCase) {
    return CGFloat(30)
  } else {
    return CGFloat(17)
  }
}()

问题是,一旦设置了fontSize,它将永远不会改变.
所以我想做这样的事情:

lazy let fontSize : CGFloat = {
  if (someCase) {
    return CGFloat(30)
  } else {
    return CGFloat(17)
  }
}()

这是不可能的.

只有这个工作:

let fontSize : CGFloat = {
  if (someCase) {
    return CGFloat(30)
  } else {
    return CGFloat(17)
  }
}()

所以 – 我想要一个延迟加载但永远不会改变的属性.
这样做的正确方法是什么?使用let和忘记懒惰的init?或者我应该使用lazy var而忘记属性的常量性质?

这是 Xcode 6.3 Beta / Swift 1.2 release notes的最新经文:

let constants have been generalized to no longer require immediate
initialization. The new rule is that a let constant must be
initialized before use (like a var),and that it may only be
initialized: not reassigned or mutated after initialization.

This enables patterns like:

let x: SomeThing
if condition {
    x = foo()
} else {
    x = bar()
}

use(x)

which formerly required the use of a var,even though there is no
mutation taking place. (16181314)

很明显,你并不是唯一一个对此感到沮丧的人.

原文链接:https://www.f2er.com/swift/320174.html

猜你在找的Swift相关文章