2
调用计算属性的设置器时的边界检查我试图确保计算属性的设置器只在某个范围内设置newValue
。计算属性的后备值是UInt
。使用 - =/+ =
所以我想我可以做的是使用min(max(newValue, 0), UInt.max)
,就像这样:
private var _value: UInt = 100
public var value: UInt {
get { return _value }
set { _value = min(max(newValue, 0), UInt.max) }
}
但是当我使用一个for循环使用-=
数值减小我抛出一个异常。
for _ in 0..<1000 {
value -= 1
}
看来这并没有做任何边界检查。有没有解决的办法?
它必须是一个计算属性,所以我不能使用didSet。该属性实际上是其他值数组中值的别名。以上仅仅是为了举例。
您正在从0 Uint减去1。你期望会发生什么? – Alexander