Bagikan melalui


Mulai menggunakan F# dengan .NET CLI

Artikel ini membahas bagaimana Anda dapat memulai dengan F# pada sistem operasi apa pun (Windows, macOS, atau Linux) dengan .NET CLI. Proses ini melibatkan pembangunan solusi multi-proyek dengan perpustakaan kelas yang dipanggil oleh aplikasi konsol.

Prasyarat

Untuk memulai, Anda harus menginstal .NET SDK terbaru.

Artikel ini mengasumsikan bahwa Anda tahu cara menggunakan baris perintah dan memiliki editor teks pilihan. Jika Anda belum menggunakannya, Visual Studio Code adalah opsi yang bagus sebagai editor teks untuk F#.

Membangun solusi multi-proyek sederhana

Buka perintah/terminal dan gunakan perintah baru dotnet untuk membuat file solusi baru yang disebut FSharpSample:

dotnet new sln -o FSharpSample

Struktur direktori berikut diproduksi setelah menjalankan perintah sebelumnya:

FSharpSample
    ├── FSharpSample.sln

Menulis pustaka kelas

Ubah direktori menjadi FSharpSample.

dotnet new Gunakan perintah untuk membuat proyek pustaka kelas di folder src bernama Pustaka.

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

Struktur direktori berikut diproduksi setelah menjalankan perintah sebelumnya:

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

Ganti isi Library.fs dengan kode berikut:

module Library

open System.Text.Json

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

Tambahkan Library proyek ke FSharpSample solusi menggunakan perintah dotnet sln add. Perintah ini menambahkan proyek ke file solusi sehingga solusi dapat melacak dan membangunnya:

dotnet sln add src/Library/Library.fsproj

Jalankan dotnet build untuk membangun proyek. Dependensi yang belum terselesaikan akan dipulihkan saat kompilasi.

Buat aplikasi konsol yang memanfaatkan pustaka kelas

dotnet new Gunakan perintah untuk membuat aplikasi konsol di folder src bernama App.

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

Struktur direktori berikut diproduksi setelah menjalankan perintah sebelumnya:

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

Ganti isi file Program.fs dengan kode berikut:

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

Tambahkan referensi ke Library proyek menggunakan dotnet reference add. Perintah ini menambahkan <ProjectReference> elemen ke file App.fsproj, yang memberi tahu pengkompilasi bahwa proyek Aplikasi bergantung pada proyek Pustaka:

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

Perintah sebelumnya menambahkan XML berikut ke file App.fsproj:

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

Petunjuk / Saran

Jika Anda melewati langkah ini dan mencoba membangun proyek Aplikasi, Anda akan mendapatkan kesalahan kompilasi karena Library modul tidak akan ditemukan. Jika ini terjadi, Anda dapat menjalankan dotnet add reference perintah atau menambahkan <ProjectReference> elemen yang ditunjukkan di atas secara manual ke file App.fsproj Anda.

Tambahkan proyek App ke solusi FSharpSample menggunakan perintah dotnet sln add:

dotnet sln add src/App/App.fsproj

Pulihkan dependensi NuGet dengan dotnet restore dan jalankan dotnet build untuk membangun proyek.

Pindahkan ke direktori proyek konsol src/App dan jalankan proyek dengan Hello World sebagai argumen.

cd src/App
dotnet run Hello World

Anda akan melihat hasil berikut ini:

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}

Langkah selanjutnya

Selanjutnya, lihat Tour of F# untuk mempelajari lebih lanjut tentang berbagai fitur F#.