briahas, а давайте добавим тип зданий - жилой дом и мост.
у дома есть параметр количество квартир.
По вашей логике у моста тоже должно быть это свойство?
а оно будет, если мы в базовый класс запихаем её с помощью протокола.
Да и зачем мне вообще дочерние классы, если в базовом есть все возможные параметры всех типов зданий?
Но это же неправильно.
И мне кажется, мы немного ушли в сторону от первоначального вопроса. Там была вполне конкретная ситуация и желание решить исключительно одну проблему.
doublench21,
Если б Sub был только один, то он и не нужен был бы.
А если у нас есть несколько дочерних классов с разными полями? получается, возвращаясь к первоначальному примеру, у класса Gallery тоже будет доступно свойство height, что неправильно, так как высота характерна только для башни (Tower).
Протокол тут не поможет. Я же не могу сделать var arr = [Buildingable]().
И про строгую типизацию тоже понятно.
Вопрос скорее в том, можно ли во что-то обернуть эту конструкцию или как-то её спрятать, чтобы не писать каждый раз "as! Tower"
у дома есть параметр количество квартир.
По вашей логике у моста тоже должно быть это свойство?
а оно будет, если мы в базовый класс запихаем её с помощью протокола.
Да и зачем мне вообще дочерние классы, если в базовом есть все возможные параметры всех типов зданий?
Но это же неправильно.
И мне кажется, мы немного ушли в сторону от первоначального вопроса. Там была вполне конкретная ситуация и желание решить исключительно одну проблему.