ВУЗ:
Составители:
Рубрика:
9
type
Proc = procedure;
SwapProc = procedure(var X, Y: Integer);
StrProc = procedure(S: String);
MathFunc = function(X: Real): Real;
DeviceFunc = function(var F: text): Integer;
MaxFunc = function(A, B: Real; F: MathFunc): Real;
Имена параметров в описании процедурного типа играют чисто де-
коративную роль − на смысл описания они не влияют.
Borland Pascal не позволяет описывать функции, которые возвраща-
ют значения процедурного типа. Результат функции должен быть указате-
лем строкового, вещественного, целого, символьного, булевского типа или
иметь перечислимый
тип, определенный пользователем.
Переменной процедурного типа можно присвоить процедурное зна-
чение. Процедурные значения могут быть следующими:
− значениями nil;
− ссылкой на переменную процедурного типа;
− идентификатором процедуры или функции.
В контексте процедурных значений описание процедуры или функ-
ции можно рассматривать как специальный вид описаний констант, когда
значением константы является процедура или
функция.
Использование процедурных переменных, которым в операторе
вызова процедуры или функции присваивается значение nil, приводит к
ошибке. Значение nil предназначено для указания того, что процедурной
переменной не присвоено значение, и там, где процедурная переменная
может получить значение nil, участвующие в этой процедурной перемен-
ной вызовы процедур и функций следует подвергать проверке:
if @P <> nil then P(I, J);
Обратите внимание
на использование операции @ для указания то-
го, что P проверяется, а не вызывается.
•Параметры процедурного типа. Поскольку процедурные типы
допускается использовать в любом контексте, то можно описывать проце-
дуры или функции, которые воспринимают процедуры и функции в каче-
стве параметров.
Параметры процедурного типа особенно полезны в том случае, когда
над
множеством процедур или функций нужно выполнить какие-то общие
действия. В следующем примере показывается использование параметров
процедурного типа для вывода трех таблиц различных арифметических
функций:
9
type
Proc = procedure;
SwapProc = procedure(var X, Y: Integer);
StrProc = procedure(S: String);
MathFunc = function(X: Real): Real;
DeviceFunc = function(var F: text): Integer;
MaxFunc = function(A, B: Real; F: MathFunc): Real;
Имена параметров в описании процедурного типа играют чисто де-
коративную роль − на смысл описания они не влияют.
Borland Pascal не позволяет описывать функции, которые возвраща-
ют значения процедурного типа. Результат функции должен быть указате-
лем строкового, вещественного, целого, символьного, булевского типа или
иметь перечислимый тип, определенный пользователем.
Переменной процедурного типа можно присвоить процедурное зна-
чение. Процедурные значения могут быть следующими:
− значениями nil;
− ссылкой на переменную процедурного типа;
− идентификатором процедуры или функции.
В контексте процедурных значений описание процедуры или функ-
ции можно рассматривать как специальный вид описаний констант, когда
значением константы является процедура или функция.
Использование процедурных переменных, которым в операторе
вызова процедуры или функции присваивается значение nil, приводит к
ошибке. Значение nil предназначено для указания того, что процедурной
переменной не присвоено значение, и там, где процедурная переменная
может получить значение nil, участвующие в этой процедурной перемен-
ной вызовы процедур и функций следует подвергать проверке:
if @P <> nil then P(I, J);
Обратите внимание на использование операции @ для указания то-
го, что P проверяется, а не вызывается.
•Параметры процедурного типа. Поскольку процедурные типы
допускается использовать в любом контексте, то можно описывать проце-
дуры или функции, которые воспринимают процедуры и функции в каче-
стве параметров.
Параметры процедурного типа особенно полезны в том случае, когда
над множеством процедур или функций нужно выполнить какие-то общие
действия. В следующем примере показывается использование параметров
процедурного типа для вывода трех таблиц различных арифметических
функций:
Страницы
- « первая
- ‹ предыдущая
- …
- 6
- 7
- 8
- 9
- 10
- …
- следующая ›
- последняя »
