Изменения в новых версиях / Delphi 10.3 Rio

// *** before: ***
var
  List: TObjectList<TPerson>;
  Dict: TDictionary<stringTArray<Integer>>;
  Count: Integer;
begin
  List := TObjectList<TPerson>.Create;   // the long type name twice
  Dict := TDictionary<stringTArray<Integer>>.Create;
  Count := List.Count;
end;

// *** in version 10.3: ***
begin
  var List := TObjectList<TPerson>.Create;
  var Dict := TDictionary<stringTArray<Integer>>.Create;
  var Count := List.Count;      // Integer
  var Name := 'Anna';           // string
  var Ratio := 1 / 3;           // Extended, not Integer

  // the type comes from the expression, so there is nothing to keep in
  // sync when the function on the right changes its result type.
  // Watch the literals: var X := 1; is an Integer, and
  // var X: Double := 1; is what you meant if you wanted a Double
end;