Существует ли способ перегрузить функцию на основе другого типа Результата в Delphi?

Перегрузка функции типом возврата?

имеет очень подробный ответ на рациональном на перегрузке функции типом возврата, и от того, что я вижу, что Delphi не позволяет это, но является там какими-либо обходными решениями для перегрузки функции на основе другого типа возврата в Delphi?

6
задан Community 23 May 2017 в 12:13
поделиться

2 ответа

Неявные и явные операторы преобразования для записей разрешения разрешения по возврату Тип возврата: а именно тип преобразования типа:

type
  TFoo = record
    class operator Implicit(const AFoo: TFoo): Integer;
    class operator Implicit(const AFoo: TFoo): string;
  end;

в зависимости от контекста, используя значение типа TFOO позвонит соответствующему неявному преобразованию. Если пытаться использовать значение типа TFOO , в качестве аргумента для перегруженной процедуры, который может принимать либо целое или строку в этом положении, произойдет ошибка перегрузки:

test.pas(33) Error: E2251 Ambiguous overloaded call to 'Q'
 + Test.pas(19) Related method: procedure Q(Integer);
 + Test.pas(24) Related method: procedure Q(const string);
9
ответ дан 8 December 2019 в 13:46
поделиться

Вы можете взять «результат» в качестве параметра.

procedure Blah( InVar : word; out OutVar : Byte ); overload;
procedure Blah( InVar : word; out OutVar : String ); overload;
7
ответ дан 8 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: