相关疑难解决方法(0)

Lazy Var vs Let

我想对Swift中的一些属性使用Lazy初始化.我当前的代码如下所示:

lazy var fontSize : CGFloat = {
  if (someCase) {
    return CGFloat(30)
  } else {
    return CGFloat(17)
  }
}()
Run Code Online (Sandbox Code Playgroud)

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

lazy let fontSize : CGFloat = {
  if (someCase) {
    return CGFloat(30)
  } else {
    return CGFloat(17)
  }
}()
Run Code Online (Sandbox Code Playgroud)

这是不可能的.

只有这个有效:

let fontSize : CGFloat = {
  if (someCase) {
    return CGFloat(30)
  } else {
    return CGFloat(17)
  }
}()
Run Code Online (Sandbox Code Playgroud)

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

var let lazy-initialization swift

46
推荐指数
3
解决办法
2万
查看次数

标签 统计

lazy-initialization ×1

let ×1

swift ×1

var ×1