Visual Model For F# – Przykład 1

Zagnieżdżone moduły – przykład 1

Ten przykład pokazuje możliwości stworzonego narzędzia, jeśli chodzi o modelowanie modułów. Mogą być one zagnieżdżone w sobie, co pokazuje rysunek 1

W tym modelu ukazanych jest wiele modułów, które posiadają funkcję o tej samej nazwie. W tym przypadku jest to po prostu funkcja bezargumentowa zwracająca cokolwiek. Można ją nazwać także polem, ponieważ nie przyjmuje żadnych argumentów. Pole to nie musi mieć unikatowej nazwy dla całego modelu, wystarczy, że będzie unikalna w ramach modułu, w którym się znajduje.

Na najwyższym poziomie modelu, czyli w RootModel, mamy umieszczony element CodeBlock o nazwie CodeBlock1. Kod źródłowy umieszczony w tym bloku to po prostu stała liczba o wartości 10. Od tego elementu zdefiniowano wiele relacji rodzaju Link to Function. Oznacza to, że każda funkcja Function1 będzie miała zdefiniowane ciało kodem, który znajduje się w elemencie CodeBlock.

W tym przykładzie wykorzystano funkcje jako elementy umieszczane w modułach. Innymi możliwymi do umieszczenia tam elementami są klasy TypeElement. W tym przykładzie ich nie wykorzystano, ale są to elementy równie dobre do umieszczenia ich w modelu co funkcje.

Poniżej (rys. 1) przedstawiono przykład z zagnieżdżonymi modułami i innymi elementami.

Zagnieżdżone moduły, funkcje i blok kodu

Rysunek 1: Zagnieżdżone moduły, funkcje i blok kodu

Dla tak zdefiniowanego modelu otrzymujemy poniższy (listing 1)  fragment kodu źródłowego w F#. Widać, że elementy z diagramu zostały przetransformowane na odpowiedni kod źródłowy.

Poziomy zagnieżdżenia modułów można rozpoznać, patrząc na wcięcia w kodzie. Wygenerowane źródło jest zgodne z tym, co zostało przedstawione i omówione w poprzednim poście dotyczącym modułów.

Za pomocą modelu można było łatwo zaprojektować prostą hierarchię modułów, koncentrując się bardziej na logice całego programu niż na składni języka F#. Jest to korzyść, którą udało się osiągnąć dzięki opracowanemu narzędziu.

let Function1  =
  10

module ModuleA =
  let Function1  =
    10

  module ModuleAA =
    let Function1  =
      10

module ModuleB =
  let Function1  =
    10

  module ModuleBA =
    module ModuleBAA =
      let Function1  =
        10

    module ModuleBAB =
      let Function1  =
        10

  module ModuleBB =
    let Function1  =
      10

Listing 1: Kod źródłowy wygenerowany na podstawie modelu z rysunku 1

adamex

About Adam Bielasty

.NET Software Developer

One thought on “Visual Model For F# – Przykład 1

  1. dobry poczatek

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *


5 − 3 =

Możesz użyć następujących tagów oraz atrybutów HTML-a:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>