- Vote on answer
- posted
20 years ago
SMS
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
HZ>>> видимости (внутpи себя), что позволяет использовать более коpоткие HZ>>> и удобочитаемые имена (снаpужи и внутpи).
DT>> Ещё бы опеpатоp with... :) А за его отсутствием пpиходится юзать классы.
HZ> Зачем он нужен? Можешь пример кода привести, где это используется и HZ> демонстрирует преимущества?
Для сокращения и "опрозрачивания" записи, для набивания меньшего количества букв.
with earthplatform.slon[1] do begin height := 3; weight := 2; sex := male; age := 10; origin := india; end;
всё-же несколько приятнее выглядит, чем
earthplatform.slon[1].height := 3; earthplatform.slon[1].wihjt := 2; earthplatform.slon[1].sex := male; earthplatform.slon[1].age := 10; earthplatform.slon[1].origin := india;
от этого в глазах рябит :-)
Ну и в реализациях на старушке PDP-11 слово with было громким намёком компилятору "щас мы ентот объект юзать будем интенсивно" и до трёх указателей на объекты, указанные в with он кешировал в регистрах. Только уже забыл - три первых или три последних :-) Имеется ввиду with object1 do with object2 do with object3 do with object4 do begin end; на кого из этих четырёх объектов указатель не закешируется.
wbr,
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
Alexander, ты ещё здесь сидишь?
Среда Январь 21 2004 15:33, Alexander Derazhne wrote to Serge Bryxin:
SB>> Структура графа вообще такого понятия не предполагает. Т.е. все в SB>> руках дизайнера интерфейса. AD> Если ты реализуешь структуру меню в виде графа общего вида, то AD> пользователю придётся ходить на курсы по этой железяке :-)).
Структура html текста с гиперссылками - граф общего вида. Тем не менее им без особых проблем пользуются, не ходя ни на какие курсы по конкретным документам или сайтам ;)
Георгий
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
HZ> Это, как раз, самый настоящий С++, а не тот кастрат, что сейчас у HZ> ИАРа - HZ> ЕС++.
DO>> и namespace это несколько про другое, для указания полей структуры ты все DO>> равно явно указываешь имя структуры.
HZ> А ты клади поля не в структуру, а в namespace. И будет то же самое. Как?!!!! У меня _несколько_ структур. Я работаю с ними где по очереди, где в цикле. Как это можно сделать через namespace? Такое ощущение, что ты слишком привык к тому, что у тебя в программах по единственному экземпляру каждого класса :-)
Wbr,
- Vote on answer
- posted
20 years ago
HZ> А через указатель на член не то же самое получается? Код:
HZ> TEarthplatform::*p = &earthplatform.slon[1];
p->height = 3; p->weidth = 2; p->sex = male; p->age = 10; p->origin = india;
HZ> От этого не рябит? И писанины не больше. _Ненамного_ больше. А если мы теперь функциями из одной записи обрабатываем поля другой, то with processor do with data do begin func1(filed2); func3(filed0); func5(filed2,filed3); end;
Заменится уже на Pprocessor *pp = &processor; Pdata *pd = &data; pp->func1(pd->field2); pp->func3(pd->filed0); pp->func5(pd->filed2,pd->filed3);
что рябит уже несколько больше.
Я понимаю, что это всё можно попробовать записать через processor << data; // :-) но...
HZ> И это также является даже HZ> сверхгромким намеком компилятору обращаться через индексный регистр. Это HZ> раз. Это является _требованием_, а не намёком. Это не возражение, это уточнение.
HZ> Во-вторых, в С++ стиль с открытыми членами-данными не приветствуется. HZ> Не HZ> тебе это говорить. По-нормальному весь этот код помещается в фунцию-член HZ> (которая может быть инлайновой). Мне доводилось разбираться в паскльном коде, в котором этих with подряд было написано штуки по 3-4. И после где-то второй страницы оно уже легко читалось. В варианте с промежуточными указателями было бы уже гораздо труднее. К C++ я тогда не пытался это приложить, давно больно было. Поэтому не могу сказать -- можно ли было то дело перепроектировать полностью. Так как иначе -- пришлось бы этим классам делать большую толпу функций-членов и почти всех почти всем делать друзьями.
HZ> Т.ч. похоже, все-таки, что with в С++ является избыточной синтаксической HZ> конструкцией. Желание иметь ее, видимо, продиктовано привычкой. Я на В C++ - да. Но учитывая то, что многие его используют как "хороший С" (за неимением оного), т.е. C с inline и с перегрузкой функций, то with может и не помешал бы.
HZ> Кроме того в С++ еще имеются пространства имен и в некоторых случаях HZ> удобнее HZ> использовать их - получается почти то же самое, что и с with, если with работает с _экземпляром_ т.е. с одним из _многих_ объектов.
HZ> поместить все HZ> эти имена в одно пространство имен, а потом для краткости написать слова HZ> using namespace и пользоваться короткими именами. А это выйдет короткое именование _одного_ набора переменных, а не полей одной из многих записей.
Wbr,