Propiedades y getters en Delphi
Un círculo cuya área es una propiedad respaldada por un getter en vez de por datos guardados.
program PropertiesGetters;
uses SysUtils;
type
TCircle = class
Radius: Double; // the storage
function GetArea: Double; // the getter
property Area: Double read GetArea; // read-only, computed on access
end;
function TCircle.GetArea: Double;
begin
Result := Pi * Radius * Radius; // Result carries the return value
end;
var Ring: TCircle;
begin
Ring := TCircle.Create;
Ring.Radius := 2.5;
// A property reads like a field, so the getter needs no parentheses.
WriteLn(Format('r %.1f has area %.2f', [Ring.Radius, Ring.Area]));
Ring.Free;
end.
Cómo funciona
property Area: Double read GetArea;nombra una propiedad de solo lectura sin campo detrás.Result := Pi * Radius * Radiusdentro deTCircle.GetAreacalcula el valor en cada lectura.Ring.Areaen la salida se lee como un campo pero corre el getter, así que no lleva paréntesis.
Palabras clave y builtins usados aquí
DoubleFormatPiResultWriteLnbeginclassendfunctionprogrampropertytypeusesvar
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 575
- Tokens
- 96
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 82 segundos.
Paso 2 de 3 en Clases; paso 20 de 27 en Fundamentos del lenguaje.