Форум: "Прочее";
Текущий архив: 2013.04.21;
Скачать: [xml.tar.bz2];
Внизприсвоение результата фанции Найти похожие ветки
← →
Toretto (2012-12-20 11:05) [0]Стал замечать, что в исходниках некоторых компонентов результат функции присваивается не зарезирвированой переменной Result, а переменной с именем функции, т.е.:
function Test: Bool;
begin
Test := True;
end;
Это хорошо с точки зрения стиля программирования
← →
И. Павел © (2012-12-20 11:07) [1]> [0] Toretto (20.12.12 11:05)
Просто привыкли. Я тоже первый год только так писал. Потом разработчики delphi по просьбам программистов добавили переменную result.
ИМХО понятнее result, т.к. что Test не простая переменная а возвращаемое значение, нужно еще сообразить.
← →
Ega23 © (2012-12-20 11:08) [2]
> Это хорошо с точки зрения стиля программирования
Это утверждение или вопрос?
> Стал замечать
Это ещё в древнем Турбо-Паскале было. И, кстати, я не уверен, была ли там переменная Result. Во всяком случае, до Delphi я её вроде не использовал.
← →
И. Павел © (2012-12-20 11:08) [3]> первый год
Ну т.е. на turbo pascal. Там выбора не было — result отсутствовал.
← →
И. Павел © (2012-12-20 11:15) [4]А вот недостаток использования переменной с именем функции:
«В данном случае оба варианта будут вести себя полностью аналогично. Различия проявляются лишь в том случае, если использовать такую переменную в выражениях в теле функции. В подобных случаях следует использовать именно переменную result, а не имя функции, поскольку использ0овании имени функции в выражении внутри самой функции приведет к ее рекурсивному вызову.»
← →
O'ShinW © (2012-12-20 11:16) [5]
> была ли там переменная Result
не было
писал как-то кому-то лабу - естественно в D в консоли, а надо было в TP.
Потом претензии были, что не компилится.
---
по сабжу
К Result привык
и потом, можно в середине проверить
result := FirstCalc;
result := result and SecondCalc;
if Result then
DoNextCalc
а если написать if Test then
еще раз Test вызовется,и переполнение стека
← →
БарЛог © (2012-12-20 11:25) [6]И. Павел © (20.12.12 11:08) [3]
> Ну т.е. на turbo pascal. Там выбора не было — result отсутствовал.
Вот хоть убей - помню, что всегда только Result писал. Оказалось, и правда не было :(
← →
RWolf © (2012-12-20 11:44) [7]тяжёлое наследие паскаля; читается хуже, гибкости меньше; в топку.
← →
Pavia © (2012-12-20 20:52) [8]По поводу result. В ввели его в Delphi 1 вернее в Object Pascal. Обетом есть doc файл на сайте эмбарго.
← →
брат Птибурдукова (2012-12-20 21:01) [9]Почему "обетом"? Может "порукой"? Тоже слово красивое, но более подходит к ситуации. %-)
← →
O'ShinW © (2012-12-20 21:12) [10]Для > фанции как раз >обетом нормально будет :)
← →
Игорь Шевченко © (2012-12-20 22:03) [11]
> сайте эмбарго
феерично.
← →
Eraser © (2012-12-20 22:17) [12]
> Toretto (20.12.12 11:05)
уже давно можно даже такfunction Test: Bool;
begin
Exit(True);
end;
правда здесь оно, конечно, не к месту.
← →
Германн © (2012-12-21 02:13) [13]
> Ega23 © (20.12.12 11:08) [2]
>
>
> > Это хорошо с точки зрения стиля программирования
>
> Это утверждение или вопрос?
>
>
> > Стал замечать
>
> Это ещё в древнем Турбо-Паскале было. И, кстати, я не уверен,
> была ли там переменная Result.
Неявно она там была. В виде @result. Но не для всех функций.
← →
Дмитрий С © (2012-12-21 02:24) [14]Мне кажется я бы сейчас уже не смог программировать на паскале )
← →
Германн © (2012-12-21 02:44) [15]
> Дмитрий С © (21.12.12 02:24) [14]
>
> Мне кажется я бы сейчас уже не смог программировать на паскале
> )
>
Если приспичит - сможешь.
Главное тут различать "правую" и "левую" стороны выражения!
← →
брат Птибурдукова (2012-12-21 08:44) [16]
> В виде @result
Так это чисто ассемблерная приблуда, насколько я помню. И была она там, где результат нельзя было в регистрах вернуть, не?
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.04.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c