Возможно ли в текущей итерации Swift (2.1) добавить ограничения на тип переменной?Swift Variable Constraints
Если у меня есть класс Element
class Element: NSObject {
var type: ElementType
init(type: ElementType) {
self.type = type
}
}
с перечислением ElementType
enum ElementType {
case Cell
case Header
case Footer
case Decoration(kind: String)
}
в каком-то другом классе, если у меня есть переменный типа Element
, это вообще можно ставить ограничения, такие как :
var element: Element? where Self == .Header
или вместо этого w ульд я должен переопределить didSet
var element: Element? {
didSet {
if let value = element where value.type == Decoration {
element = Optional.None
}
}
}
я уверен, что это не возможно, то общая система не является столь мощным, как хотелось бы (будучи в состоянии только ограничить расширения от наследования протокола и класса, например, и не VARIADIC общие параметры).
Это очень плохо, мне бы хотелось увидеть какую-то функцию фильтра ограничений с расширениями, где вы можете выборочно применять расширения на основе значений перечисления, например – barndog
Я изначально создал эту библиотеку, которую я создаю в объективе-c, поэтому у меня было структуру подкласса, где «Заголовок» унаследован от общего класса «Элемент», но я тоже вроде ассоциированных перечислений. кто знает, мы увидим – barndog