
我当前的代码如下所示:
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而忘记属性的常量性质?
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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)