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.
F#
open System // Gets access to functionality in System namespace.// Defines a list of nameslet 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:
// Group data with RecordstypeSuccessfulWithdrawal=
{ Amount: decimal
Balance: decimal }
typeFailedWithdrawal=
{ Amount: decimal
Balance: decimal
IsOverdraft: bool }
// Use discriminated unions to represent data of 1 or more formstypeWithdrawalResult=
| 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.
F#
// Returns a WithdrawalResultlet withdrawMoney amount = // Implementation elidedlet 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.
F#
typeSet<'T when 'T: comparison>(elements: seq<'T>) =
member s.IsEmpty = // Implementation elidedmember s.Contains (value) =// Implementation elidedmember 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.
GitHub'da bizimle işbirliği yapın
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
F# kısa, performanslı, sağlam ve pratik kod yazmayı kolaylaştıran açık kaynaklı, platformlar arası bir programlama dilidir. Web API'si, Masaüstü, IoT, Oyun ve daha fazlası gibi birçok farklı türde uygulama oluşturmanıza olanak tanıyan genel amaçlı bir dildir.