我想“禁止”将var等值设置为0(浮点型或int型),以确保它可以作为适当的除数。在Swift中实现此目标的正确方法是什么?我可以想到的一种方法是将fatalError()放入didSet方法中,但我想Swift可能有更好的方法来处理它。
答案 0 :(得分:2)
您有几种选择,但是我认为这取决于您的偏好以及变量的使用方式。
如果将 fatalError()
设置为0
是程序员错误,则应该使用它,因为应该通过测试您的应用程序来捕获它。就个人而言,我会避免这种情况。
您也可以使用didSet
将该值修改为非零值,例如1
。
另一种选择是使用一个函数来设置值,并在传递0
时使该函数抛出错误,这样设置值的代码可以对此做出响应并提醒用户。
这就是我将要执行的最后一个选项的方式:
enum InputError: Error {
case divisorCantBeZero
}
private var _divisor: CGFloat = 1
var divisor: CGFloat {
return _divisor
}
func setDivisor(_ newValue: CGFloat) throws {
guard newValue != 0 else {
throw InputError.divisorCantBeZero
}
_divisor = newValue
}
答案 1 :(得分:1)
我建议为此查看precondition
和/或assert
。
根据设置为0时问题的严重性,可以选择其中一个。