Udostępnij za pośrednictwem


Zwracane dane i kończenie

Dostępne są dwa wyrażenia, które kończą wykonywanie bieżącej podrouty lub programu; wyrażenia return i fail. Ogólnie rzecz biorąc, obiekty wywołujące mogą zakończyć wykonywanie przed wykonaniem wszystkich instrukcji za pomocą wyrażenia return lub fail. Wyrażenie return kończy wykonywanie bieżącego wywołania, a fail kończy wykonywanie całego programu i powoduje błąd środowiska uruchomieniowego.

Wyrażenie zwracane

Wyrażenie return kończy działanie z bieżącego elementu wywołującego i zwraca kontrolkę do obiektu wywoływanego. Zmienia kontekst wykonywania, wyskakując ramkę stosu.

Wyrażenie zawsze zwraca wartość do kontekstu obiektu wywoływanego; składa się ze słowa kluczowego return, a następnie wyrażenia odpowiedniego typu. Wartość zwracana jest obliczana przed wykonaniem jakichkolwiek akcji zakończenia i zwróceniem kontrolki. Akcje zakończenia obejmują na przykład czyszczenie i zwalnianie kubitów przydzielonych w kontekście wywołania. W przypadku uruchamiania w symulatorze lub modułu sprawdzania poprawności akcje przerywania często obejmują również kontrole związane ze stanem tych kubitów. Mogą na przykład sprawdzić, czy są one prawidłowo odłączone od wszystkich kubitów, które pozostają aktywne.

Wyrażenie return na końcu wywołania zwracającego wartość Unit może zostać pominięte. W takim przypadku kontrolka jest zwracana automatycznie po zakończeniu wszystkich instrukcji i wykonaniu wszystkich akcji zakończenia. Obiekty wywołujące mogą zawierać wiele wyrażeń return, choć implementacja przylegającą do operacji zawierających wiele wyrażeń return nie może być generowana automatycznie.

Na przykład

return 1;

lub

return ();

Wyrażenie niepowodzenia

Wyrażenie fail kończy obliczanie całkowicie. Odpowiada on błędowi krytycznemu, który przerywa program.

Składa się z słowa kluczowego fail, a następnie wyrażenia typu String. String powinien podać informacje o napotkanym błędzie.

Na przykład

fail "Impossible state reached";

lub przy użyciu ciągu interpolowanego ,

fail $"Syndrome {syn} is incorrect";

Oprócz danego Stringwyrażenie fail najlepiej zbiera i zezwala na pobieranie informacji o stanie programu. Ułatwia to diagnozowanie i naprawianie źródła błędu oraz wymaga obsługi wykonywanego środowiska uruchomieniowego i oprogramowania układowego, które może się różnić w różnych miejscach docelowych.