F# je univerzální programovací jazyk pro psaní stručného, robustního a výkonného kódu.
F# umožňuje psát nezaplněný kód pro samodokumentování, kde váš fokus zůstává na vaší problémové doméně, a ne na podrobnosti programování.
Dělá to bez ohrožení rychlosti a kompatibility – je to opensourcový, multiplatformní a interoperabilní.
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#")
Jazyk F# má řadu funkcí, mezi které patří:
Jednoduchá syntaxe
Neměnné ve výchozím nastavení
Odvození typů a automatická generalizace
Funkce první třídy
Výkonné datové typy
Porovnávání vzorů
Asynchronní programování
Úplná sada funkcí je zdokumentovaná v průvodci jazykem F#.
// 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
Záznamy F# a diskriminované sjednocení jsou non-null, neměnné a srovnatelné ve výchozím nastavení, což je velmi snadné.
Správnost funkcí a porovnávání vzorů
Funkce jazyka F# se snadno definují. V kombinaci s porovnáváním vzorů umožňují definovat chování, jehož správnost vynucuje kompilátor.
// 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 :("
Funkce F# jsou také prvotřídní, což znamená, že je možné je předat jako parametry a vracet je z jiných funkcí.
Funkce definující operace s objekty
Jazyk F# má plnou podporu pro objekty, které jsou užitečné, když potřebujete kombinovat data a funkce. Členy a funkce jazyka F# je možné definovat pro manipulaci s objekty.
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)
V jazyce F# často napíšete kód, který zpracovává objekty jako typ pro funkce, které se mají manipulovat. Funkce, jako jsou obecná rozhraní, výrazy objektů a uvážlivé použití členů, jsou běžné ve větších programech jazyka F#.
Další kroky
Další informace o větší sadě funkcí jazyka F# najdete v prohlídce jazyka F#.
Spolupracujte s námi na GitHubu
Zdroj tohoto obsahu najdete na GitHubu, kde můžete také vytvářet a kontrolovat problémy a žádosti o přijetí změn. Další informace najdete v našem průvodci pro přispěvatele.
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
F# je opensourcový programovací jazyk pro různé platformy, který usnadňuje psaní stručného, výkonného, robustního a praktického kódu. Jedná se o univerzální jazyk, který umožňuje vytvářet mnoho různých typů aplikací, jako je webové rozhraní API, Desktop, IoT, Hraní a další.