Re[4]: А Вы хоть знаете что такое WITH?
От: WolfHound  
Дата: 20.10.04 08:48
Оценка: +4
Здравствуйте, Сергей Губанов, Вы писали:

СГ>А Вы хоть знаете что такое оператор WITH? Или это Вы взяли with из того паскаля, который был сразу после Алгола?

Да-да тот самый маразм...
СГ>На всякий случай напишу что такое оператор WITH. В оберонах WITH — это оператор конкретизации типа.
А ну значит не все так плохо... хоть что-то понял...

СГ>Смысл: Если динамический тип полиморфной переменной x оказался T1, то выполняется S1 внутри которой x рассматривается как переменная типа T1; в противном случае если динамический тип полиморфной переменной x оказался T2, то выполняется S2 внутри которой x рассматривается как переменная типа T2; в противном случае выполняется S3.

И зачем ради этого вводить специальную конструкцию в язык? Это что так часто нужно? Вот в С++ есть dynamic_cast и его хватает на все случаи жизни. Да и нужен он очень редко. Ибо виртуальный функции рулят.
Вобще говоря знать динамический тип объекта нужно на столько редко что введение в язык конструкции которая позволяет проверить объект на принадлежность к нескольким типам заставляет задуматься очень не хорошими мыслями об авторе этого языка...

ЗЫ Ловкость рук и...
#define with(dest, src, type)if(type* dest = dynamic_cast<type*>(src))
void MyProc(base* p)
{
    with(x, p, T1)
        std::cout << x.Str << std::endl;
    else with(x, p, T2)
        std::cout << x.Value << std::endl;
    else 
        std::cout << "Че за хрень?" << std::endl;
}

... << RSDN@Home 1.1.4 rev. 185 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.