Logo

2 декабря 2014 г.

Этюд 3. Частичное применение переменной

Как уже говорилось, переменные в Канторе являются функциями, но, будучи реализованными памятью, допускают присвоение значений, то есть одновременно являются как выходными (чистыми), так и входными свойствами. Этот дуализм можно использовать с частичным применением, одной строчкой описывая сразу два свойства.

На Delphi

В Delphi поля, методы и свойства класса являются самостоятельными сущностями, поэтому для описания перекрываемого свойства требуется обвязка в виде защищенных виртуальных методов GetIntValue и SetIntValue:
type
  TMyClass = class
  private
    FIntValue: Integer;
  protected
    function GetIntValue: Integer; virtual;
    procedure SetIntValue(Value: Integer); virtual;
  public
    property IntValue: Integer read GetIntValue write SetIntValue;
  end;

procedure TMyClass.GetIntValue: Integer;
begin
  Result := FIntValue;
end;

procedure TMyClass.SetIntValue(Value: Integer);
begin
  FIntValue := Value;
end;

На Канторе

С частичным применением эквивалентный код на Канторе получается экстремально коротким:
class MyClass of
  var Core:Integer intValue;
  public IntValue = partial intValue;
end;
Без частичного применения будет длинней, но всё равно короче, чем на Delphi:
class MyClass of
  var Core:Integer intValue;
  public out IntValue = intValue;
  public intValue(Core:Integer value) of
    intValue = value;
  end;
end;

Комментариев нет :

Отправить комментарий

Выбрав в выпадающем списке пункт «Имя/URL», можно оставить комментарий от своего имени без предварительной регистрации.