Przeładowanie operatorów a 'Result'

0

Witam.
Czy podczas przeładowania operatora koniecznie jest używanie Result? W sensie czy błędem jest, jak go nie użyje i będzie to miało sens?
Np.

// ....
type
  MojRekord = record
  var w : Integer;
  class operator Divide(c, d: MojRekord):MojRekord; 

//...
var x, y: MojRekord;
//...
class operator MojRekord.Divide(c,d: MojRekord):MojRekord;
  begin
  x.w:= d.w;
  y.w:= c.w;
  end;
//...

Czy jednak przeładowanie operatorów nie do tego służy?

1

Przeładowywanie operatorów nie służy do tego, co wynika z Twojego kodu - idealnie w ogóle nie powinieneś się tam odwoływać do zmiennych globalnych.
Dlaczego chciałbyś, aby wywołanie dzielenia dwóch rekordów zmieniało jakieś zmienne, a nie zwracało wynik?

3
  class operator MojRekord.Divide(c,d: MojRekord):MojRekord;
  begin
    Result.w:=c.w/d.w;
  end;
3
xdanio7x napisał(a)

Czy jednak przeładowanie operatorów nie do tego służy?

Przeładowywanie operatorów w zamyśle ma służyć do objęcia kontroli nad podstawowymi operacjami (dodawanie, odejmowanie itd.) dla typów danych, które nie posiadają ich zdefiniowanych; Po drugie, podpięcie się pod dany operator ma umożliwić zwrócenie danych tego samego typu, a nie modyfikację czegokolwiek znajdującego się w argumentach;

Twój kod @xdanio7x jest błędny, bo przeładowujesz operator wbrew jego przeznaczeniu; Dlatego też odpowiedź na to pytanie:

Czy podczas przeładowania operatora koniecznie jest używanie Result?

brzmi - tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1