を使用して計算されたプロパティのセッターを呼び出すときの境界チェック計算されたプロパティのセッターが特定の範囲内のnewValue
を設定するようにしようとしています。計算されたプロパティのバッキング値はUInt
です。- =/+ =
それでは、私は私が考えていたことはそうのように、min(max(newValue, 0), UInt.max)
を使用している:私は例外をスロー-=
を使用して値をデクリメントするforループを使用する場合
private var _value: UInt = 100
public var value: UInt {
get { return _value }
set { _value = min(max(newValue, 0), UInt.max) }
}
しかし。
for _ in 0..<1000 {
value -= 1
}
これは境界チェックを行わないようです。これを回避する方法はありますか?
私はdidSetを使うことができないので、これは計算されたプロパティでなければなりません。このプロパティは、実際には他の値の配列内の値の別名です。上記は単なる例である。
0 Uintから1を引いています。何が起こると思いますか? – Alexander