Рассмотрим:
enum Line {
case Horizontal(CGFloat)
case Vertical(CGFloat)
}
let leftEdge = Line.Horizontal(0.0)
let leftMaskRightEdge = Line.Horizontal(0.05)
Как получить доступ, скажем, lefEdge
связанное значение, напрямую, без использования оператора switch?
let noIdeaHowTo = leftEdge.associatedValue + 0.5
Это даже не компилируется!
Я просмотрел эти qaru.site/info/156820/... questions, но ни один из ответов, похоже, не затрагивает эту проблему.
Строка non-компиляции noIdeaHowTo
должна быть действительно однострочной, но поскольку associated value
может быть любым типом, я даже не вижу, как код пользователя может писать даже "общий" метод get или relatedValue в le enum.
Я закончил с этим, но он важен, и мне нужно пересмотреть код каждый раз, когда я добавляю/изменяю случай...
enum Line {
case Horizontal(CGFloat)
case Vertical(CGFloat)
var associatedValue: CGFloat {
get {
switch self {
case .Horizontal(let value): return value
case .Vertical(let value): return value
}
}
}
}
Любой указатель на кого-нибудь?