Delphi基本チュートリアルのグラフィックバージョンのインライン変数

インライン変数はDelphiRio 10.3で導入された機能です。この機能は実際には他の言語では新しいものではありません。最初にDelphiに遭遇したとき、不満を言うとしたら、それは変数の宣言になります。

公式ドキュメント:http://docwiki.embarcadero.com/RADStudio/Rio/en/Inline_Variable_Declaration

インライン変数宣言

以前は、ローカル変数は次の方法で宣言する必要がありました

procedure Test;
var
  I: Integer;
begin
  I := 22;
  ShowMessage (I.ToString);
end;

インライン変数を使用して宣言します

procedure Test;
begin
  var I: Integer;
  I := 22;
  ShowMessage (I.ToString);
end;

最初のタイプの変数宣言に関する2つのポイント

(1)Iのような変数は一時的にしか使用できませんが、事前に宣言する必要があります。この構文の方が読みやすいと言う友人もいますが、コードの量が多い場合は、マウスを繰り返しドラッグしてタイプを確認してください。声明も非常に面倒ですが、読みやすさが低下している気がします

(2)変数のスコープ変数が宣言されている限り、そのスコープは関数とプロセス全体ですが、ループまたはifステートメントで変数を使用するだけでよい場合があり、目に見えないリソースの浪費を引き起こします

参考資料

  • インライン変数はパフォーマンスを向上させることができます:https://blog.grijjy.com/2018/11/02/inline-variables-can-increase-performance/

可変範囲

ここでは、公式ドキュメントに記載されているコード例を直接参照してください

procedure Test; // 在单个语句中声明和初始化
begin
  var I: Integer := 22;
  ShowMessage (I.ToString);
end;

procedure Test1; // 多个内联声明
begin
  var I: Integer := 22;
  var J: Integer;
  J := 22 + I;
  var K: Integer := I + J;
  ShowMessage (K.ToString);
end;

procedure Test2; // 范围仅限于本语句块
begin
  var I: Integer := 22;
  if I > 10 then
  begin
    var J: Integer := 3;
    ShowMessage (J.ToString);
  end
  else
  begin
    var K: Integer := 3;
    ShowMessage (J.ToString); // COMPILER ERROR: “Undeclared identifier: ‘J’”
  end;
end;

Test2のプロセスでは、2つの変数JKが対応するステートメントブロックで宣言されているため、fステートメントのスコープを超えるとアクセスできません。同様に、JはelseInaccessible内のifブロックで宣言されます。ブロック

型推論

なじみのないAPIを使用する場合は、関数の戻り値を受け取る変数を定義するときに、関数の戻り値の型を繰り返し確認する必要があります。とにかく、みんながそれを感じているかどうかはわかりませんが、私はイライラしています。幸い、インライン変数の最後の機能は、型推論(または型推論と呼ばれる)できることです。具体的なことについては、以下のコードを参照してください

procedure NewTest;
begin
  var MyDictionary := TDictionary<string, Integer>.Create;
  MyDictionary.Add ('one', 1);
  var APair := MyDictionary.ExtractPair('one');
  ShowMessage (APair.Value.ToString)
end;

MyDictionaryとAPairの2つの変数は、戻り値を受け取るときに型を宣言する必要はありません。等号の右側の関数に従って、型を自動的に推定できます。これが型推論です。

もちろん、変数を宣言するときに型定義は省略されますが、それが何を表すかを知る必要があります。

ループでのインライン変数の使用

個人的には、これはインライン変数にとって最も便利な場所です。ナンセンスではありません、Cuihuaのコード...

  for var I: Integer := 1 to 10 do
      ...

  for var Item: TItemType in Collection do
      ...

この時点で、インライン変数の導入はすべて終わりましたが、公式発表ではインライン変数はDelphi Rio 10.3でサポートされているとのことですが、実際の状況ではIDEにバグがあります。これで使用する場合versionコンパイルは成功するものの、迷惑な赤い線が表示されることがあります。この問題はDelphiSydney10.4で修正されています

おすすめ

転載: blog.csdn.net/farmer_city/article/details/109488310