F# nedir?
F# kısa, sağlam ve performanslı kod yazmaya yönelik evrensel bir programlama dilidir.
F# programlama ayrıntıları yerine sorun etki alanınızda kaldığınız dağınık, kendi kendine belgelenen kod yazmanızı sağlar.
Bunu hız ve uyumluluktan ödün vermeden yapar- açık kaynak, platformlar arası ve birlikte çalışabilir.
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# şu özellikler dahil olmak üzere birçok özelliğe sahiptir:
- Basit söz dizimi
- Varsayılan olarak sabit
- Tür çıkarımı ve otomatik genelleştirme
- Birinci sınıf işlevler
- Güçlü veri türleri
- Desen eşleştirme
- Zaman uyumsuz programlama
Tüm özellikler F# dil kılavuzunda belgelenmiştir.
Zengin veri türleri
Kayıtlar ve Ayrımcı Birleşimler gibi türler verilerinizi temsil etmenizi sağlar.
// 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
F# kayıtları ve ayrımcı birleşimler null olmayan, sabit ve varsayılan olarak karşılaştırılabilir olduğundan kullanımı çok kolaydır.
İşlevler ve desen eşleştirme ile doğruluk
F# işlevlerini tanımlamak kolaydır. Desen eşleştirme ile birleştirildiğinde, doğruluğu derleyici tarafından zorlanan davranışı tanımlamanıza olanak sağlar.
// 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 :("
F# işlevleri de birinci sınıftır, yani bunlar parametre olarak geçirilebilir ve diğer işlevlerden döndürülebilir.
Nesneler üzerinde işlem tanımlamak için işlevler
F# nesneleri için tam desteğe sahiptir. Bu, verileri ve işlevleri karıştırmanız gerektiğinde kullanışlıdır. F# üyeleri ve işlevleri nesneleri işlemek için tanımlanabilir.
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)
F# dilinde, genellikle nesneleri işlevlerin işlemesi için bir tür olarak değerlendiren bir kod yazarsınız. Genel arabirimler, nesne ifadeleri ve üyelerin judicious kullanımı gibi özellikler daha büyük F# programlarında yaygındır.
Sonraki adımlar
Daha büyük bir F# özellikleri kümesi hakkında daha fazla bilgi edinmek için F# Turu'na göz atın.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin