Udostępnij przez


Wprowadzenie do języka F# przy użyciu interfejsu wiersza polecenia platformy .NET

W tym artykule opisano, jak rozpocząć pracę z językiem F# w dowolnym systemie operacyjnym (Windows, macOS lub Linux) przy użyciu interfejsu wiersza polecenia platformy .NET. Przechodzi przez proces tworzenia rozwiązania wieloprojektowego z biblioteką klas wywoływaną przez aplikację konsolową.

Wymagania wstępne

Aby rozpocząć, musisz zainstalować najnowszy zestaw .NET SDK.

W tym artykule założono, że wiesz, jak używać wiersza polecenia i korzystać z preferowanego edytora tekstów. Jeśli jeszcze go nie używasz, program Visual Studio Code jest doskonałym rozwiązaniem jako edytor tekstów dla języka F#.

Tworzenie prostego rozwiązania wieloprojektowego

Otwórz wiersz polecenia/terminal i użyj polecenia dotnet new , aby utworzyć nowy plik rozwiązania o nazwie FSharpSample:

dotnet new sln -o FSharpSample

Po uruchomieniu poprzedniego polecenia zostanie utworzona następująca struktura katalogów:

FSharpSample
    ├── FSharpSample.sln

Pisanie biblioteki klas

Zmień katalogi na FSharpSample.

Użyj polecenia , dotnet new aby utworzyć projekt biblioteki klas w folderze src o nazwie Library.

dotnet new classlib -lang "F#" -o src/Library

Po uruchomieniu poprzedniego polecenia zostanie utworzona następująca struktura katalogów:

└── FSharpSample
    ├── FSharpSample.sln
    └── src
        └── Library
            ├── Library.fs
            └── Library.fsproj

Zastąp zawartość Library.fs następującym kodem:

module Library

open System.Text.Json

let getJson value =
    let json = JsonSerializer.Serialize(value)
    value, json

Dodaj projekt Library do rozwiązania FSharpSample przy użyciu polecenia dotnet sln add. To polecenie dodaje projekt do pliku rozwiązania, aby rozwiązanie może go śledzić i skompilować:

dotnet sln add src/Library/Library.fsproj

Uruchom polecenie dotnet build , aby skompilować projekt. Nierozwiązane zależności zostaną przywrócone podczas kompilowania.

Pisanie aplikacji konsolowej, która korzysta z biblioteki klas

Użyj polecenia , dotnet new aby utworzyć aplikację konsolową w folderze src o nazwie App.

dotnet new console -lang "F#" -o src/App

Po uruchomieniu poprzedniego polecenia zostanie utworzona następująca struktura katalogów:

└── FSharpSample
    ├── FSharpSample.sln
    └── src
        ├── App
        │   ├── App.fsproj
        │   ├── Program.fs
        └── Library
            ├── Library.fs
            └── Library.fsproj

Zastąp zawartość pliku Program.fs następującym kodem:

open System
open Library

[<EntryPoint>]
let main args =
    printfn "Nice command-line arguments! Here's what System.Text.Json has to say about them:"

    let value, json = getJson {| args=args; year=System.DateTime.Now.Year |}
    printfn $"Input: %0A{value}"
    printfn $"Output: %s{json}"

    0 // return an integer exit code

Dodaj odwołanie do Library projektu przy użyciu polecenia dotnet reference add. To polecenie dodaje <ProjectReference> element do pliku App.fsproj, który informuje kompilator, że projekt Aplikacji zależy od projektu Biblioteka:

dotnet add src/App/App.fsproj reference src/Library/Library.fsproj

Poprzednie polecenie dodaje następujący kod XML do pliku App.fsproj:

<ItemGroup>
  <ProjectReference Include="..\Library\Library.fsproj" />
</ItemGroup>

Wskazówka

Jeśli pominiesz ten krok i spróbujesz skompilować projekt Aplikacji, zostanie wyświetlony błąd kompilacji, ponieważ Library moduł nie zostanie znaleziony. W takim przypadku możesz uruchomić polecenie dotnet add reference lub ręcznie dodać element <ProjectReference> wskazany powyżej do pliku App.fsproj.

Dodaj App projekt do rozwiązania FSharpSample przy użyciu polecenia dotnet sln add.

dotnet sln add src/App/App.fsproj

Przywróć zależności NuGet za pomocą dotnet restore polecenia i uruchom polecenie dotnet build , aby skompilować projekt.

Zmień katalog na src/App projekt konsoli i uruchom projekt przekazujący Hello World jako argumenty:

cd src/App
dotnet run Hello World

Powinny zostać wyświetlone następujące wyniki:

Nice command-line arguments! Here's what System.Text.Json has to say about them:
Input: { args = [|"Hello"; "World"|] year = 2021 }
Output: {"args":["Hello","World"],"year":2021}

Następne kroki

Następnie zapoznaj się z przewodnikiem po języku F# , aby dowiedzieć się więcej o różnych funkcjach języka F#.