Untitled
user_6919294
pascal
a year ago
2.0 kB
13
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