Z tego dokumentu dowiesz się, jak korzystać z sprawdzania połączeń.
Przykłady wartości
Podczas definiowania połączeń z kontrolą dla danych wejściowych i wyjściowych zwykle należy traktować te kontrole jako reprezentujące typy.
Sprawdzanie danych wejściowych powinno obejmować wszystkie „typy” danych, które są akceptowane, a sprawdzanie danych wyjściowych powinno obejmować dokładnie to, co „zwracają”.
Akceptowanie jednego typu
W najprostszym przypadku, gdy chcesz utworzyć blok, który „akceptuje” lub „zwraca” określony typ, musisz uwzględnić ten typ w sprawdzaniu połączenia.
Akceptowanie wielu typów
Aby utworzyć blok, który „akceptuje” wiele typów, musisz uwzględnić wszystkie akceptowane typy w sprawdzaniu połączenia danych wejściowych.
Zgodnie z konwencją, jeśli dane wyjściowe mogą czasami być akceptowane w różnych sytuacjach (np. jeśli zezwalasz na używanie liczb jako ciągów znaków), dane wyjściowe powinny być bardziej restrykcyjne, a dane wejściowe bardziej liberalne. Dzięki tej konwencji wyjścia nie łączą się w miejscach, w których nie są obsługiwane.
Akceptuj dowolny typ
Aby utworzyć blok, który „akceptuje” dowolny typ, musisz ustawić w sekcji połączenia parametr connection check na wartość null
.
Podtypy zwrotów
Aby utworzyć blok, który „zwraca” podtyp, musisz uwzględnić w sprawdzaniu połączeń wyjścia zarówno typ, jak i supertyp.
W przypadku podtypów można użyć wielu testów w sprawdzaniu danych wyjściowych, ponieważ blok zawsze „zwraca” oba typy.
Zwracanie typów parametrycznych
Aby utworzyć blok, który „zwraca” typ z parametrami, musisz uwzględnić w sprawdzaniu połączenia wersji z parametrami i bez parametrów.
W zależności od tego, jak rygorystyczne mają być blokady, możesz też uwzględnić wariacje typu.
Podobnie jak w przypadku podtypów, w tym przypadku w sprawdzaniu wyjściowym można mieć wiele sprawdzeń, ponieważ blok zawsze „zwraca” oba typy.
Przykłady z wyrażeniami i wyrażeniami warunkowymi
Deweloperzy mogą definiować sprawdzanie poprzednich i następnych połączeń na kilka sposobów. Zwykle są one traktowane jako ograniczenie kolejności bloków.
Połączenia następne powinny określać, które bloki powinny następować po bieżącym, a połączenia poprzednie – co reprezentuje bieżący blok.
Zachowaj kolejność bloków
Aby utworzyć zestaw bloków, które łączą się w określonej kolejności, musisz określić, które bloki powinny następować po bieżącym w następnym sprawdzeniu połączenia, a także co jest bieżącym blokiem w poprzednim sprawdzeniu połączenia.
Zezwalanie na wiele bloków pośrednich
Aby utworzyć zestaw uporządkowanych bloków, które umożliwiają użycie wielu bloków pośrednich, musisz uwzględnić co najmniej 1 element z poprzedniego sprawdzenia połączenia bloku pośredniego w następnym sprawdzeniu połączenia tego bloku. Dzięki temu blok może być poprzedzony przez więcej bloków.
Nie zezwalaj na bloki pośrednie
Aby utworzyć zestaw uporządkowanych bloków, w których bloki środkowe są opcjonalne, musisz uwzględnić co najmniej 1 wpis z poprzedniego sprawdzenia połączenia bloku środkowego oraz z poprzedniego sprawdzenia połączenia ostatniego bloku w następnym sprawdzeniu połączenia pierwszego bloku. Dzięki temu po pierwszym bloku może nastąpić blok środkowy lub ostatni.
Grupy „albo-albo”
Aby utworzyć blok, po którym mogą występować tylko bloki z jednej grupy lub tylko bloki z drugiej grupy (a nie oba), musisz wykonać 2 czynności:
W następnym sprawdzeniu połączenia pierwszego bloku musisz uwzględnić co najmniej 1 pozycję z poprzednich sprawdzeń połączenia obu grup.
Musisz zdefiniować kolejne sprawdzania połączeń grup tak, aby uwzględniały tylko wartości, które znajdują się w poprzednich sprawdzaniach połączeń (aby mogły być one używane tylko przez bloki tej samej grupy).