Función que devuelve el registro con el campo de interfaz
Después de preguntaresta pregunta sobre los campos de interfaz en los registros Supuse que lo siguiente funcionaría (observe la afirmación):
type
TRec <T> = record
Intf : IInterface;
end;
TTestClass = class
public
function ReturnRec : TRec <Integer>;
end;
// Implementation
function TTestClass.ReturnRec : TRec <Integer>;
begin
Assert (Result.Intf = nil); // Interface field in record should be initialized!
Result.Intf := TInterfacedObject.Create;
end;
Lo probé con el siguiente código:
for I := 1 to 1000 do
Rec := Test.ReturnRec;
y la afirmación falla!
¿Dónde está mi error aquí? ¿Qué suposición está mal?