Re[12]: Что должен возвращать if?
От: Evgeny.Panasyuk Россия  
Дата: 17.10.14 18:48
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>>>Не нужна информация о том, в какой ветке, какой тип. И из какой ветки мы получили управление.

EP>>Почему не нужна?
WH>По тому, что мы уже обработали информацию о ветвлении внутри самого if.

При вызове виртуального метода общего интерфейса (к которому привелись результаты веток) — точно также обрабатывается информация о ветвлении.
Не вижу здесь принципиальной разницы с Variant.

WH>>>По тому, что нужно значение.

EP>>И какой тип у этого значения?
WH>Тот, к которому приводятся типы обеих веток.

И получится в общем случае что-то очень близкое к Object'у

EP>>Что в этом плохого?

WH>То, что это не нужно.

Аргумент

EP>>Почему это хуже, чем вывод общей базы,

WH>Хотя бы по тому что для того чтобы получить данные из этого варианта тебе нужен ещё один точно такой же if.

Во-первых, как уже говорил выше — можно дать возможность получить из Variant'а значение общего типа (то есть текущее поведение).
Во-вторых, при вызове виртуального метода — также происходит индерекция (пусть и другого рода) как и при if.

EP>>которая может быть крайне "слабым" типом вроде IPrintable, а то и вовсе Object.

WH>В немерле Object не выводится. Там специальная закладка на этот счёт есть.

А с IPrintable (или подобным крайне "слабым") как быть?
То есть будут где-то иерархии пересекаться недалеко от Object'а — толку-то?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.