Przejdź do głównej zawartości

Wymagalne wartości logiczne warunków


Mechanizm wyrażeń czasami wymaga, aby wyliczona wartość była wymagalna. Dzieje się tak we wszystkich miejscach, gdzie jest podejmowana decyzja:

  1. Warunek klasyfikacji rekordów w bloczku
  2. Warunek wykonania operacji mapowania
  3. Reguła walidacji
  4. Itp..

W każdym z tych miejsc system musi podjąć jednoznaczną decyzję TAK lub NIE i odpowiedź "nie wiadomo" jest nieakceptowalna.

Co zrobić, gdy napisaliśmy jakieś złożone wyrażenie posługujące się polami niewymagalnymi a potrzebujemy wartości wymagalnej?

Można rozważyć trzy podejścia - błąd, od góry, od dołu.

Weźmy za przykład takie wyrażenie:

Amount * Rate > ..\config\Threshold

Tu w przypadku niewymagalności któregokolwiek pola warunek będzie niewymagalną wartością logiczną.

Trzy możliwości postępowania:

  1. Błąd - w tym podejściu w mapowaniu wymuszamy wymagalność naszych pól jeszcze przed obliczeniem (i dbamy, by operacje wystąpiły przed operacją obliczenia, w razie potrzeby je tam przesuwając). W efekcie nasze wyrażenie, oparte wtedy już na polach wymagalnych, również da w całości wymagalny wynik obliczenia. W przypadku wystąpienia braku wartości wejściowej, cały rekord zostanie odrzucony jako błąd. Zaznaczamy nasze pola i w menu kontekstowym włączamy im opcję Wymagalne.

  2. Od góry - w podejściu tym, niezależnie od przyczyny pojawienia się wartości pustych i sposobu ich propagowania do góry, cały wynik będzie w razie czego wymagalną wartością logiczną "true". Przykład rozwiązania: (Amount * Rate > ..\config\Threshold) ?? true

  3. Od dołu - tu należy zastanowić się nad możliwą wartością zastępczą dla każdego niewymagalnego pola wchodzącego do obliczeń i w razie potrzeby zastosować obejście. Przykład rozwiązania: Amount???0 * Rate???1 > ..\config\Threshold???1000000000

Przykład rozwiązania z użyciem operatora ?? i wymaganych w tym przypadku nawiasów (a`la C# / Java):

(Amount ?? 0) * (Rate ?? 1) > (..\config\Threshold ?? 1000000000)

wskazówka

Zachęcamy do zapoznania się z opisem arytmetyki wartości pustych i rodzajów innych specjalnych wartości poszczególnych typów. Patrz: Brak wartości i specjalne wartości puste

Zobacz również​

Język programowania

Brak wartości i specjalne wartości puste