Оператор описания переменной
В PascalABC.NET можно описывать переменные внутри составного оператора begin-end в специальном операторе описания переменной. Такие описания называются внутриблочными.
Внутриблочное описание имеет одну из форм:
var
список имен
:
тип
;
или
var
имя
:
тип
:=
выражение
;
или
var
имя
:
тип
=
выражение
;
// Для совместимости с Delphi
или
var
имя
:=
выражение
;
Имена в списке перечисляются через запятую. Например:
begin
var a1,a2,a3: integer;
var n: real := 5;
var s := ' ';
...
end.
В последнем случае тип переменной автовыводится по типу выражения в правой части. Автовыведение типа активно используется при инициализации переменной вызовом конструктора или функции. возвращающей объект:
begin
var l := new List<integer>;
var a :=
Seq(1,3,5); // тип a выводится по типу возвращаемого значения Seq: array of
integer
end.
Кортежное присваивание с описанием переменных
Кортежное присваивание (распаковку кортежа в переменные) можно совмещать с описанием переменных:
var t := (1,2);
(var a, var b) := (1,2);
или
var (a,b) := (1,2);
Распаковка кортежа в переменные часто используется при возвращении функцией кортежа:
function SP(a,b: real) := (a*b,2*(a+b));
...
var (S,P) := SP(2,3);
Инициализация лямбда-выражением
Автовыведение типа при описании невозможно при инициализации переменной лямбда-выражением:
// var f := x -> x*x; // так нельзя!
var
f : Func<integer,integer> := x -> x*x;
Внутриблочные описания используются чтобы не захламлять раздел описаний описанием вспомогательных переменных. Кроме этого, внутриблочные описания позволяют вводить переменные именно в тот момент когда они впервые потребовались. Оба этих фактора существенно повышают читаемость программы.