私は、Swiftのいくつかのプロパティに対してLazy初期化を使用したいと考えています。 私の現在のコードは次のようになります。Lazy Var vs Let
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
を使用して、プロパティの一定の性質について忘れてはいけませんか?
私は同意します - スウィフトは怠け者です。怠惰なvarパターン(値が変更されないことが確実な場合)のもう1つの問題は、オブジェクトを突然変異させることで初めてプロパティを読み取ることです(内部的には変化します - 遅延値が格納されます)外部コードの観点からオブジェクトが変更されていなくても、オブジェクトをvarとして宣言しなければなりません。 –
あなたが得ることができる唯一の 'lazy'は 'sw' 2.1のようなものです(Swift 2.1のように)、フロートの割り当てであれば怠け者は心配しません。特にアクセスがあることが分かっている場合は特にです。 – bshirley