Określanie warunków pojawiania się adnotacji

Gdy adnotacja jest warunkowa, może wymagać innych adnotacji, aby określić je do analizatora. Jeśli na przykład funkcja ma zmienną, która może być synchroniczna lub asynchroniczna, funkcja zachowuje się w następujący sposób: w przypadku synchronicznym zawsze kończy się powodzeniem, ale w przypadku asynchronicznym zgłasza błąd, jeśli nie może natychmiast zakończyć się powodzeniem. Gdy funkcja jest wywoływana synchronicznie, sprawdzanie wartości wyniku nie daje żadnej wartości analizatorowi kodu, ponieważ nie zostałoby zwrócone. Jeśli jednak funkcja jest wywoływana asynchronicznie, a wynik funkcji nie jest sprawdzany, może wystąpić poważny błąd. W tym przykładzie pokazano sytuację, w której można użyć _When_ adnotacji — opisanej w dalszej części tego artykułu — w celu włączenia sprawdzania.

Adnotacje strukturalne

Aby kontrolować, kiedy i gdzie mają zastosowanie adnotacje, użyj następujących adnotacji strukturalnych.

Adnotacja opis
_At_(expr, anno-list) expr jest wyrażeniem, które zwraca wartość lvalue. Adnotacje w pliku anno-list są stosowane do obiektu o nazwie .expr Dla każdej adnotacji w elemecie anno-listexpr element jest interpretowany w warunku wstępnym, jeśli adnotacja jest interpretowana w warunku wstępnym i w warunku po zakończeniu, jeśli adnotacja jest interpretowana w warunku po.
_At_buffer_(expr, iter, elem-count, anno-list) expr jest wyrażeniem, które zwraca wartość lvalue. Adnotacje w pliku anno-list są stosowane do obiektu o nazwie .expr Dla każdej adnotacji w elemecie anno-listexpr element jest interpretowany w warunku wstępnym, jeśli adnotacja jest interpretowana w warunku wstępnym, a po warunku, jeśli adnotacja jest interpretowana w warunku po.

iter to nazwa zmiennej, która jest ograniczona do adnotacji (włącznie z anno-list). iter ma typ longniejawny . Identycznie nazwane zmienne w dowolnym otaczającym zakresie są ukryte przed oceną.

elem-count jest wyrażeniem, które oblicza liczbę całkowitą.
_Group_(anno-list) Adnotacje w elemecie anno-list są uznawane za wszelkie kwalifikator, który ma zastosowanie do adnotacji grupy, która jest stosowana do każdej adnotacji.
_When_(expr, anno-list) expr to wyrażenie, które można przekonwertować na bool. Jeśli nie ma wartości zero (true), adnotacje określone w elemecie anno-list są uznawane za odpowiednie.

Domyślnie dla każdej adnotacji w elemecie anno-listexpr jest interpretowana jako użycie wartości wejściowych, jeśli adnotacja jest warunkiem wstępnym, i jako użycie wartości wyjściowych, jeśli adnotacja jest warunkiem po. Aby zastąpić wartość domyślną, możesz użyć _Old_ funkcji wewnętrznej podczas oceny warunku po, aby wskazać, że należy użyć wartości wejściowych. Uwaga: Różne adnotacje mogą być włączone w konsekwencji użycia _When_ , jeśli wartość modyfikowalna — na przykład — jest zaangażowana, *pLengthponieważ obliczony wynik warunku wstępnego może różnić się od ocenianego expr wyniku po warunku.

Zobacz też