我有一个枚举类型,用于表示线条的粗细,可以是固定宽度,也可以是相对于视图大小的宽度。
enum Thickness {
case Constant(Float) // where value ≥ 0
case Relative(Float) // where 0 ≤ value ≤ 1
}
有没有一种方法可以将这些相关值约束构建到枚举类型中?我目前正在使用此类型属性上的didSet
属性观察器:
var lineThickness: Thickness {
didSet {
switch lineThickness {
case let .Relative(x): lineThickness = .Relative(min(max(x, 0), 1))
case let .Constant(x): lineThickness = .Constant(max(x, 0))
}
}
}
但是,如果我只需为整个类型执行一次此操作,而不是为每个属性复制此观察器,那将更加简洁。
我知道可以为枚举创建初始化程序或方法,但我不确定如何使用它来约束相关值?