ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »