Понятие возвращаемого значения имеет смысл только тогда, когда мы говорим о функции, так как процедура не возвращает значения. Функции возвращают значения любых типов данных кроме Text и file of.
Важные тезисы:
1. В теле функции должен быть, по крайней мере, один оператор, присваивающий значение имени функции или неявной локальной переменной Result. Если такого оператора нет, то значение функции будет не определено.
function Power(X, Y: Double): Double; // X и Y - формальные параметрыbegin Power := Exp(Y * Ln(X));end; function Power(X, Y: Double): Double; // X и Y - формальные параметрыbegin Result := Exp(Y * Ln(X));end; function Min(const A, B: Integer): Integer;begin if A < B then Result := A else Result := B;end; |
2. Если таких присваиваний несколько, то результатом функции будет значение последнего из этих операторов.
3. Преимущество от использования переменной Result состоит в том, что она может участвовать в выражениях как операнд внутри тела функции.
4. Переменная Result и имя функции всегда представляют одно и то же значение.
Пример:
function MyFunction: Integer;begin MyFunction := 5; Result := Result * 2; MyFunction := Result + 1;end; |
(Можно задать вопрос, какое значение вернет функция)
Эта функция вернет значение 11.
5. Использование имени функции в правой части оператора присваивания приведет к рекурсивному вызову этой функции в отличие от переменной Result.