Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
F# adalah bahasa pemrograman universal untuk menulis kode yang ringkas, kuat, dan berkinerja.
F# memungkinkan Anda menulis kode yang tidak berantakan dan mendokumentasikan sendiri, di mana fokus Anda tetap pada domain masalah Anda, daripada detail pemrograman.
Ini dilakukan tanpa mengorbankan kecepatan dan kompatibilitas - itu adalah sumber terbuka, lintas platform dan dapat dioperasikan.
open System // Gets access to functionality in System namespace.
// Defines a list of names
let names = [ "Peter"; "Julia"; "Xi" ]
// Defines a function that takes a name and produces a greeting.
let getGreeting name = $"Hello, {name}"
// Prints a greeting for each name!
names
|> List.map getGreeting
|> List.iter (fun greeting -> printfn $"{greeting}! Enjoy your F#")
F# memiliki banyak fitur, termasuk:
- Sintaks ringan
- Tidak dapat diubah secara default
- Inferensi tipe dan generalisasi otomatis
- Fungsi Kelas Utama
- Jenis data yang kuat
- Pencocokan pola
- Pemrograman asinkron
Serangkaian fitur lengkap didokumentasikan dalam panduan bahasa F#.
Jenis data yang kaya
Jenis seperti Catatan dan Union Diskriminatif memungkinkan Anda mewakili data Anda.
// Group data with Records
type SuccessfulWithdrawal =
{ Amount: decimal
Balance: decimal }
type FailedWithdrawal =
{ Amount: decimal
Balance: decimal
IsOverdraft: bool }
// Use discriminated unions to represent data of 1 or more forms
type WithdrawalResult =
| Success of SuccessfulWithdrawal
| InsufficientFunds of FailedWithdrawal
| CardExpired of System.DateTime
| UndisclosedFailure
Catatan F# dan union terdiskriminasi adalah non-null, tidak berubah, dan secara default dapat dibandingkan, membuatnya sangat mudah digunakan.
Kecocokan dengan fungsi dan pencocokan pola
Fungsi F# mudah didefinisikan. Ketika dikombinasikan dengan pencocokan pola, mereka memungkinkan Anda untuk menentukan perilaku yang kebenarannya diberlakukan oleh pengompilasi.
// Returns a WithdrawalResult
let withdrawMoney amount = // Implementation elided
let handleWithdrawal amount =
let w = withdrawMoney amount
// The F# compiler enforces accounting for each case!
match w with
| Success s -> printfn $"Successfully withdrew %f{s.Amount}"
| InsufficientFunds f -> printfn $"Failed: balance is %f{f.Balance}"
| CardExpired d -> printfn $"Failed: card expired on {d}"
| UndisclosedFailure -> printfn "Failed: unknown :("
Fungsi F# juga kelas satu, yang berarti dapat diteruskan sebagai parameter dan dikembalikan dari fungsi lain.
Fungsi untuk menentukan operasi pada objek
F# memiliki dukungan penuh untuk objek, yang berguna ketika Anda perlu memadukan data dan fungsionalitas. Anggota dan fungsi F# dapat didefinisikan untuk memanipulasi objek.
type Set<'T when 'T: comparison>(elements: seq<'T>) =
member s.IsEmpty = // Implementation elided
member s.Contains (value) =// Implementation elided
member s.Add (value) = // Implementation elided
// ...
// Further Implementation elided
// ...
interface IEnumerable<'T>
interface IReadOnlyCollection<'T>
module Set =
let isEmpty (set: Set<'T>) = set.IsEmpty
let contains element (set: Set<'T>) = set.Contains(element)
let add value (set: Set<'T>) = set.Add(value)
Di F#, Anda akan sering menulis kode yang memperlakukan objek sebagai jenis fungsi untuk dimanipulasi. Fitur seperti antarmuka generik, ekspresi objek, dan penggunaan anggota yang bijaksana umum ditemui dalam program F# yang lebih besar.
Langkah selanjutnya
Untuk mempelajari lebih lanjut tentang serangkaian fitur F# yang lebih besar, lihat F# Tour.