これらのオーバーロードを受け取る2つのEqualメソッドがあります。
TVariantExpression = reference to function(): Variant;
function Equal(const value: Variant): TRuleBuilder; overload;
function Equal(expr: TVariantExpression): TRuleBuilder; overload;
私が別の関数を持っているとしましょう:
function TForm1.GetMagicNumber: Variant;
begin
Result := 10;
end;
そして私はこのような関数を呼び出します:
Equal(Form1.GetMagicNumber);
調べたところ、2番目のオーバーロードが呼び出されたという結果が得られました。なんで?どちらも呼び出されるのが有効だからです。