Реализация интерфейса IEquatable - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Ругается:
Внутренняя ошибка компилятора в модуле [pabcnetc.exe] :'System.Exception: System.TypeLoadException: Отсутствует реализация метода "Equals" в типе "Program146.TPoint" из сборки "Program146, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null". в System.Reflection.Emit.TypeBuilder.TermCreateClass(RuntimeModule module, Int32 tk, ObjectHandleOnStack type) в System.Reflection.Emit.TypeBuilder.CreateTypeNoLock() в System.Reflection.Emit.TypeBuilder.CreateType() в PascalABCCompiler.NETGenerator.ILConverter.CloseTypes() в PascalABCCompiler.NETGenerator.ILConverter.ConvertFromTree(IProgramNode p, String TargetFileName, String SourceFileName, CompilerOptions options, String[] ResourceFiles) в PascalABCCompiler.Compiler.Compile()'

Решение задачи: «Реализация интерфейса IEquatable»

textual
Листинг программы
type TPoint = Class <-- 
  private _X, _Y: real;
  
  public 
    property X: real read _X write _X; // X координата точки
    property Y: real read _Y write _Y; // Y координата точки
    
    constructor(cx, cy: real);
    begin
      X := cx;Y := cy;
    end;
    
    function DistanceTo(p: TPoint) := Sqrt(Sqr(p.X - X) + Sqr(p.Y - Y)); // Возвращает дистанцию от данной точки до точки p.
    
    function GetRadiusVectorLength() := Sqrt(Sqr(X) + Sqr(Y)); // Получает длину радиус вектора, задаваемого координатами данной точки.
    
    class function Readln() := new TPoint(ReadlnReal('X:'), ReadlnReal('Y:')); // Выполняет чтение точки с клавиатуры и возвращает новую точку.
    
    class function operator=(a, b: TPoint) := (a.X = b.X) and (a.Y = b.Y);
    
    class function operator<>(a, b: TPoint) := not (a = b);
    
    function ToString() := Format('Point({0}, {1})', X, Y); // Возвращает строковое представление объекта.
    
    procedure Print() := Write(ToString());
    
    procedure Println() := Writeln(ToString());
  
    function Equals(a: TPoint) := self = a; //<----- это оно.
  end;

Объяснение кода листинга программы

Список элементов кода:

  1. Объявление типа TPoint с приватными полями _X и _Y типа real.
  2. Реализация свойств X и Y типа real.
  3. Реализация конструктора TPoint с двумя аргументами типа real.
  4. Реализация функции DistanceTo для вычисления расстояния между двумя точками.
  5. Реализация функции GetRadiusVectorLength для вычисления длины радиус вектора заданной точки.
  6. Реализация функции Readln для чтения точки с клавиатуры и создания нового экземпляра TPoint.
  7. Реализация оператора присваивания для двух объектов TPoint.
  8. Реализация оператора < для двух объектов TPoint.
  9. Реализация функции ToString для получения строкового представления объекта TPoint.
  10. Реализация процедур Print и Println для вывода строкового представления объекта TPoint в консоль.
  11. Реализация функции Equals для проверки равенства двух объектов TPoint.

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы