Delphiでラムダ式
Delphi 10.3 Rioでは、Delphi言語のエンハンスとして、インライン変数宣言とインライン変数の型推論が導入されました。
これによりDelphiでラムダ式(無名メソッド)が書きやすくなりましたのでご紹介します。
ソースコードでラムダ式を使うメリットとしては以下が挙げられます。
- スレッドやコールバックのようなロジックをインラインで書くことによって可読性が向上する。
- 判定条件などの処理をオブジェクトとして持つことで記載が簡潔になる。
10.2まで、Delphiで無名メソッドを使用するにはTypeブロック内で以下のように宣言する必要があります。
program LTDel; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; type TMyFunc = reference to procedure(); var f0 : TMyFunc; f1 : TMyFunc; begin f0 := procedure begin WriteLn('Hello,') end; f1 := procedure begin WriteLn('World!') end; f0(); f1(); end.
そして、10.3 Rioからは、以下のように記述出来ます。ラムダ式を配列として宣言した例です。型推論のおかげでかなりラムダ式しています。
program LTDel; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; begin var f := [ procedure begin WriteLn('Hello,') end, procedure begin WriteLn('World!') end ]; f[0](); f[1](); end.
一見、ラムダ式は難しく見えますが、理解して使い始めた途端に可読性が良くなりますので、是非とも使ってみて下さい。