Przejdź do głównej zawartości

Typy

Każda zmienna ma typ, który mówi, co może przechowywać: tekst, liczbę całkowitą, liczbę dziesiętną, tak lub nie, datę i godzinę, unikalny identyfikator (GUID). Pieniądze mają grosze, więc liczba całkowita nie wystarczy. Jeśli zmienisz NetAmount na liczbę całkowitą, analizator od razu pokaże niezgodność. Ustaw NetAmount i Discount jako decimal.

Każdy typ może stać się listą: LineAmounts to lista liczb dziesiętnych. Niektórych wartości może brakować: typ opcjonalny mówi, że to w porządku. Przykład: zmienna CouponCode, bo klient może podać kod kuponu albo nie. Analizator zmusza cię do obsłużenia pustej wartości wszędzie tam, gdzie wartość jest wymagana.

Typy proste nie wystarczą do opisania całej pozycji zamówienia, więc zdefiniuj typ własny (typedef) OrderLine z trzema polami: Name (tekst), Quantity (liczba całkowita), UnitPrice (liczba dziesiętna). Po zapisaniu pojawi się on w wyborze typu obok typów wbudowanych.

  1. Zmień LineAmounts na OrderLines: wybierz typ użytkownika OrderLine i zaznacz pole tablicy (array), żeby system wiedział, że pozycji może być więcej niż jedna.
  2. Wypełnij listę kilkoma pozycjami. W edytorze użyj new, potem nazwy modułu, kropki i nazwy typu; IntelliSense pokaże wymagane właściwości. Rozszerzone okno edytora daje więcej miejsca.
  3. W ForEach elementem jest teraz jedna pozycja zamówienia. Użyj jej pól: NetAmount = NetAmount + Quantity * UnitPrice.

Jeśli edytor zgłasza int?, znak zapytania oznacza wartość opcjonalną: odznacz pole nullable, żeby typ pasował do typu pola. Nadawaj blokom czytelne nazwy, żeby na kanwie było widać, która zmienna jest tworzona.

Zamień proces w prawdziwą funkcję. Zmienne wejściowe i wyjściowe są w menu po lewej, w osobnej sekcji.

  • Wejściowa: Lines (lista OrderLine).
  • Wyjściowe: NetAmount i Discount.

Usuń aktywności CreateVariable, które one zastępują. Proces ma teraz jasny kontrakt: na wejściu pozycje, na wyjściu kwota netto i rabat.