swift – Lazy Var vs Let

swift – Lazy Var vs Let,第1张

概述我想对Swift中的一些属性使用Lazy初始化. 我当前的代码如下所示: lazy var fontSize : CGFloat = { if (someCase) { return CGFloat(30) } else { return CGFloat(17) }}() 问题是,一旦设置了fontSize,它将永远不会改变. 所以我想做这样的事情: lazy 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: SomeThingif 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)

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

总结

以上是内存溢出为你收集整理的swift – Lazy Var vs Let全部内容,希望文章能够帮你解决swift – Lazy Var vs Let所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1051300.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存