Обобщенные подпрограммы в качестве параметров

Обобщенные подпрограммы в качестве параметров

Обобщенная подпрограмма может выступать в качестве формального параметра другой обобщенной подпрограммы.

Например, в классе System.Array имеется несколько статических обобщенных методов с обобщенными подпрограммами в качестве параметров. Так, System.Array.Find имеет следующий прототип:

System.Array.FindAll<T>(a: array of T; pred: Predicate<T>): array of T;

и возвращает подмассив массива a элементов T, удовлетворяющих условию pred.

Приведем пример вызова этой функции:

function f(x: integer): boolean;

begin

Result := ;

end;

var a := Seq(1,3,6,5,8);

var b := System.Array.FindAll(a,x -> x mod 2 = 0);

Здесь возвращается массив b, содержащий все четные значения массива a в том же порядке.