[解決済み】プロパティのゲッターとセッター
2022-04-13 18:05:19
質問
この単純なクラスで、私はコンパイラの 警告
変更/アクセスを試みている
x
自身のセッター/ゲッター内で
と、こんな風に使ってみると
var p: point = Point()
p.x = 12
EXC_BAD_ACCESSが発生します。明示的なバッキングアイバーを使用せずにこれを行うにはどうすればよいですか?
class Point {
var x: Int {
set {
x = newValue * 2 //Error
}
get {
return x / 2 //Error
}
}
// ...
}
解決方法は?
セッターとゲッターの適用対象は
computed properties
このようなプロパティは、インスタンスに保存されていません - ゲッターからの値は、他のインスタンスプロパティから計算されることを意味します。 あなたの場合
x
を代入する必要があります。
明示的: "明示的なバックアイバーなしでこれを行うにはどうすればよいですか"。 できません。 何か を使用して、計算されたプロパティをバックアップします。 これを試してみてください。
class Point {
private var _x: Int = 0 // _x -> backingX
var x: Int {
set { _x = 2 * newValue }
get { return _x / 2 }
}
}
具体的には、Swift REPLで。
15> var pt = Point()
pt: Point = {
_x = 0
}
16> pt.x = 10
17> pt
$R3: Point = {
_x = 20
}
18> pt.x
$R4: Int = 10
関連
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] Pythonの@propertyデコレーターはどのように機能するのでしょうか?
-
[解決済み] オブジェクトのプロパティを値でソートする
-
[解決済み] 変数を使用してオブジェクトのプロパティに動的にアクセスする
-
[解決済み] プロパティとゲッターとセッターの使い分け
-
[解決済み] 2倍値を小数点以下x桁に丸める処理を素早く行う。
-
[解決済み】UIViewControllerの最上位機種を取得する。
-
[解決済み] Swift で異なる型のスーパークラスのプロパティをオーバーライドする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Swift presentViewController
-
[解決済み] 型の不変値に変異型メンバを使用することはできません。
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] Swiftではクロージャの内部では常に[unowned self]を使うべきか?
-
[解決済み】String.substringWithRangeはどのように使うのですか?(または、SwiftでRangeはどのように動作しますか?)
-
[解決済み】weak referenceとunowned referenceの違いは何ですか?
-
[解決済み】Swiftの構造体のために、メンバーごとの初期化子をデフォルトで公開するにはどうすればよいですか?
-
[解決済み】Swiftのenumのカウントを取得する方法は?
-
[解決済み】Swiftの`let`と`var`の違いは何ですか?
-
[解決済み】Swiftで辞書に要素を追加する方法は?