計算型プロパティで数値が変わる原因は何でしょうか?
詳解swift第5版の計算型プロパティのList3-16のコードでテキスト通りに動かないところがあります。
計算型プロパティのゲッタで値が変わってしまってますが何故でしょうか?
以下の実行結果から変数mlが4のところでは0.0ですが5で31.5735になります。
なんでですか?Xcodeのバグですか?仕様ですか?
またPrint文が4の次に8が実行されてから5が実行されてるのは何故ですか?
発生している問題・エラーメッセージ
プレイグラウンドでの実行結果
1 -- init ounce: 2.0
2 -- init Ounce.ounceUS: 29.5735
3 -- init ounce * Ounce.ounceUS: 59.147
4 -- ml: 0.0
8 -- ml: 31.5735
5 -- ml: 31.5735
6 -- Ounce.ounceUS: 29.5735
7 -- get: 1.0676281130065768
9 -- init self.ounce: 1.0676281130065768
31.5735
エラーメッセージはありません
Swift struct Ounce { var ml: Double = 0.0 static let ounceUS = 29.5735 init(ounce: Double) { print("1 -- init ounce: (ounce)") print("2 -- init Ounce.ounceUS: (Ounce.ounceUS)") print("3 -- init ounce * Ounce.ounceUS: (ounce * Ounce.ounceUS)") print("4 -- ml: (ml)") self.ounce = ounce //* Ounce.ounceUS print("8 -- ml: (ml)") print("9 -- init self.ounce: (self.ounce)") } //計算型プロパティounce var ounce: Double{ get{ print("5 -- ml: (ml)") print("6 -- Ounce.ounceUS: (Ounce.ounceUS)") print("7 -- get: (ml / Ounce.ounceUS)") return ml / Ounce.ounceUS } set{ ml = newValue + Ounce.ounceUS } } } var a = Ounce(ounce: 2.0) print("a.ml: (a.ml)")
試したこと
print文で数値が変わるところまでは確認できましたが、何で変わるのかわかりません。
MakBookの再起動、Xcodeの再起動はしてみました。
Xcode Version 12.5.1 (12E507)
macOS BigSur
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/05 16:29