Персональная страничка
| ||
Предыдущий раздел:
Следующий раздел:
Значением переменной процедурного типа является целая процедура или функция. Например, в ситуации, когда нужно многократно повторять действия, совпадающие с точностью до замены какого-то выражения или небольшого набора операторов, это выражение или набор операторов можно передать в процедуру в качестве параметра процедурного типа.
Для объявления процедурного типа используется заголовок процедуры или функции без указания имени. Например:
type TProc1 = procedure (a, b, c: real; var d: real); TProc2 = procedure (var a, b: array of integer); TProc3 = procedure; {Процедура без параметров} TFunc1 = function: real; {Функция без параметров} TFunc2 = function (var x:array of integer): integer; var Proc1: TProc1; Proc2: TProc2; Proc3: TProc3; Func1: TFunc1; Func2: TFunc2;
Если в программе описаны процедуры или функции с подходящим видом заголовка, то их можно присваивать переменным процедурного типа. Например, если есть функция с заголовком
function ArraySum(var a: array of integer):integer;
вычисляющая сумму элементов массива, то в программе допустимо присваивание:
Func2:=ArraySum;
После такого присваивания инструкция
s:=Func2(x);
запишет в переменную s сумму элементов массива x (фактически будет вызвана функция ArraySum).
Следующий раздел:
Предыдущий раздел:
Т.е Можно выполнить процедуру и присвоить её значение какой-либо переменной ? Немного не понятно для чего это
При присваивании
Func2:=ArraySum;
сама процедура не выполняется. По сути, в этот момент мы просто даем процедуре еще одно имя, по которому ее можно вызвать. Пример использования есть в следующем разделе.
Надежный кредит: 8(495)769-53-05 Игорь (Москва)