Megosztás:


Az F# használatának első lépései a .NET parancssori felülettel

Ez a cikk bemutatja, hogyan kezdheti el az F# használatát bármely operációs rendszeren (Windows, macOS vagy Linux) a .NET CLI-vel. Egy többprojektű megoldás létrehozásával foglalkozik, amelyben egy konzolalkalmazás egy osztálykönyvtárat hív meg.

Előfeltételek

Először telepítenie kell a legújabb .NET SDK-t.

Ez a cikk feltételezi, hogy tudja, hogyan használhat parancssort, és rendelkezik előnyben részesített szövegszerkesztővel. Ha még nem használja, a Visual Studio Code nagyszerű lehetőség az F# szövegszerkesztőjeként.

Egyszerű többprojektes megoldás létrehozása

Nyisson meg egy parancssort/terminált, és a dotnet új parancsával hozzon létre egy új, a következő nevű FSharpSamplemegoldásfájlt:

dotnet new sln -o FSharpSample

Az előző parancs futtatása után a következő könyvtárstruktúra jön létre:

FSharpSample
    ├── FSharpSample.sln

Osztálytár írása

Módosítsa a könyvtárakat FSharpSample-ra.

dotnet new A parancs használatával hozzon létre egy osztálytárprojektet a Könyvtár nevű src mappában.

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

Az előző parancs futtatása után a következő könyvtárstruktúra jön létre:

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

Cserélje le a Library.fs tartalmát a következő kódra:

module Library

open System.Text.Json

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

Adja hozzá a Library projektet a FSharpSample megoldáshoz a dotnet sln add paranccsal. Ez a parancs hozzáadja a projektet a megoldásfájlhoz, hogy a megoldás nyomon tudja követni és felépítse:

dotnet sln add src/Library/Library.fsproj

Futtassa dotnet build a projekt felépítéséhez. A feloldatlan függőségek az összeállításkor lesznek visszaállítva.

Az osztálytárat használó konzolalkalmazás írása

dotnet new A paranccsal hozzon létre egy konzolalkalmazást az App nevű src mappában.

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

Az előző parancs futtatása után a következő könyvtárstruktúra jön létre:

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

Cserélje le a Program.fs fájl tartalmát a következő kódra:

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

Adjon hozzá egy hivatkozást a Library projekthez a dotnet reference add parancs használatával. Ez a parancs hozzáad egy <ProjectReference> elemet az App.fsproj fájlhoz, amely közli a fordítóval, hogy az alkalmazásprojekt az Erőforrástár projekttől függ:

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

Az előző parancs hozzáadja a következő XML-t az App.fsproj fájlhoz:

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

Jótanács

Ha kihagyja ezt a lépést, és megpróbálja létrehozni az alkalmazásprojektet, fordítási hibát fog kapni, mert a Library modul nem található. Ha ez történik, futtathatja a dotnet add reference parancsot, vagy manuálisan hozzáadhatja a <ProjectReference> fent látható elemet az App.fsproj fájlhoz.

Adja hozzá a App projektet a FSharpSample megoldáshoz a dotnet sln add következő paranccsal:

dotnet sln add src/App/App.fsproj

A NuGet-függőségek visszaállításához használja a dotnet restore parancsot, majd a dotnet build parancs futtatásával építse fel a projektet.

Módosítsa a könyvtárat a src/App konzolprojektre, és futtassa az argumentumként átadott Hello World projektet:

cd src/App
dotnet run Hello World

A következő eredményeket kell látnia:

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}

Következő lépések

A következő lépésben tekintse meg az F# bemutatóját a különböző F# funkciókkal kapcsolatos további információkért.