Untitled

 avatar
user_6919294
pascal
a year ago
2.0 kB
7
Indexable
Użycie Exit w funkcjach z typami złożonymi
W przypadku funkcji zwracających złożone typy danych, takie jak rekordy, klasy czy dynamiczne tablice, użycie Exit również jest możliwe:

type
  TPoint = record
    X: Integer;
    Y: Integer;
  end;

function UtworzPunkt(X, Y: Integer): TPoint;
begin
  Result.X := X;
  Result.Y := Y;
  Exit(Result); // Zwracamy rekord
end;

Użycie Exit w funkcjach z wyjątkami
Jeśli w trakcie działania funkcji może wystąpić wyjątek, można użyć Exit do wcześniejszego zakończenia funkcji po odpowiednim obsłużeniu wyjątku:

function BezpieczneDzielenie(a, b: Integer): Double;
begin
  try
    if b = 0 then
      raise Exception.Create('Dzielenie przez zero!');
    Exit(a / b);
  except
    on E: Exception do
    begin
      WriteLn('Błąd: ', E.Message);
      Exit(0); // Zwracamy domyślną wartość w przypadku błędu
    end;
  end;
end;

Funkcje z typami referencyjnymi
W przypadku typów referencyjnych, takich jak obiekty i klasy, Exit może być używane do zwrócenia instancji obiektu:

type
  TPerson = class
    Name: string;
    Age: Integer;
  end;

function CreatePerson(const AName: string; AAge: Integer): TPerson;
begin
  Result := TPerson.Create;
  Result.Name := AName;
  Result.Age := AAge;
  Exit(Result); // Zwracamy obiekt
end;

Przykład praktyczny
Rozważmy bardziej złożony przykład, w którym Exit jest używane do zwracania wartości w różnych sytuacjach:

type
  TStudent = record
    Name: string;
    Score: Integer;
  end;

function CalculateGrade(Student: TStudent): Char;
begin
  if Student.Score >= 90 then
    Exit('A')
  else if Student.Score >= 80 then
    Exit('B')
  else if Student.Score >= 70 then
    Exit('C')
  else if Student.Score >= 60 then
    Exit('D')
  else
    Exit('F');
end;

var
  Student: TStudent;
  Grade: Char;
begin
  Student.Name := 'Jan Kowalski';
  Student.Score := 85;

  Grade := CalculateGrade(Student);
  WriteLn(Student.Name, ' otrzymuje ocenę: ', Grade);
end.
Editor is loading...
Leave a Comment