Описание языка PascalABC.NET | страница 35
write(['Иванов','Петров','Сидорова']);
выведет ['Иванов','Петров','Сидорова'], при этом данные, если это возможно, будут отсортированы по возрастанию.
Для перебора всех элементов множества можно использовать цикл foreach, данные перебираются в некотором внутреннем порядке:
foreach s: string in fios do
write(s,' ');
Для добавления элемента x к множеству s используется конструкция s += [x] или стандартная процедура Include: Include(s,x). Для удаления элемента x из множества s используется конструкция s -= [x] или стандартная процедура Exclude: Exclude(s,x).
Процедурный тип
Тип, предназначенный для хранения ссылок на процедуры или функции, называется процедурным, а переменная такого типа - процедурной переменной. Основное назначение процедурных переменных - хранение и косвенный вызов действий (функций) в ходе выполнения программы и передача их в качестве параметров.
Описание процедурного типа совпадает с заголовком соответствующей процедуры или функции без имени. Например:
type
ProcI = procedure (i: integer);
FunI = function (x,y: integer): integer;
Процедурной переменной можно присвоить процедуру или функцию с совместимым типом, например:
function Mult(x,y: integer): integer;
begin
Result := x*y;
end;
var f: FunI := Mult;
Процедурной переменной можно также присвоить лямбда-выражение с соответствующим количеством параметров и типом возвращаемого значения:
var f2: FunI := (x,y) -> x+2*y;
После этого можно вызвать процедуру или функцию через эту процедурную переменную, пользуясь обычным синтаксисом вызова:
write(f(2)); // 8
write(f2(3)); // 10
Для наиболее распространенных процедурных типов в системном модуле определен ряд синонимов. Приведем примеры с их использованием:
var f3: IntFunc := x -> 2*x-1;
var f4: Func
var f3: Action
var pr: Predicate
Для процедурных типов определены также сокращенные конструкции:
() -> T; // функция без параметров, возвращающая T
T1 -> T; // функция c параметром T1, возвращающая T
(T1,T2) -> T // функция c параметрами T1 и T2, возвращающая T
(T1,T2,T3) -> T // функция c параметрами T1, T2 и T3, возвращающая T
и т.д.
() -> (); // процедура без параметров
T1 -> T; // процедура c параметром T1
(T1,T2) -> T // процедура c параметрами T1 и T2
(T1,T2,T3) -> T // процедура c параметрами T1, T2 и T3