Функции. Функции теперь могут возвращать значения любого типа, включая сложные и определенные пользователем

Функции теперь могут возвращать значения любого типа, включая сложные и определенные пользователем. Исключениями по-прежнему являются типизированные файлы и объекты старой модели.

Внутри каждой функции описана локальная переменная Result, имеющая тот же тип, что и возвращаемое функцией значение. В отличие от имени функции, которое доступно для записи и используется только для возврата значения, переменная Result доступна для чтения/записи и может быть использована в промежуточных вычислениях. Например, вызов функции

function Infinite: integer;

begin

Infinite:= 1;

Infinite:= Infinite + 1;

end;

приведет к зацикливанию программы, в то время как вызов

function Finite:integer;

begin

Result:= 1;

Result:= Result + 1;

end;

всегда будет возвращать двойку. Значение Result при входе в функцию не инициализируется и до первого присваивания не определено.

Имеется вoзмoжнocть иcпользoвaть подпрограммы с одинаковыми именами, но отличающиеся количеством и типом параметров. В заголовках таких подпрограмм должно быть указано зарезервированное слово overload. При вызове таких подпрограмм компилятор анализирует количество и тип фактических параметров и вызывает соответствующую им подпрограмму.

Вариантный тип

В практике программирования часто встречаются ситуации, когда передаваемое переменной значение может иметь неизвестный заранее тип данных. Иногда в такой ситуации можно воспользоваться приведением значений к строковому типу. Однако это не всегда возможно. В таких случаях можно воспользоваться специальным типом Variant.

Для представления значений в этом типе отводится 16 байт. В них содержится код типа и само значение или указатель на значение.

Тип вариант позволяет хранить данные любых типов, за исключением структурных типов. При инициализации переменной-варианта ей присваивается значение UnAsigned. Для получения информации о типе хранимых данных можно использовать специальную функцию VarType.

Var X: Variant;

Х:=25;

Х:=43.56;

X:=true;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: