Typ jednotky
Typ unit
je typ, který označuje nepřítomnost konkrétní hodnoty; unit
typ má pouze jednu hodnotu, která funguje jako zástupný symbol, pokud žádná jiná hodnota neexistuje nebo není nutná.
Syntaxe
// The value of the unit type.
()
Poznámky
Každý výraz jazyka F# musí být vyhodnocen jako hodnota. U výrazů, které negenerují hodnotu, která je zajímavá, se použije hodnota typu unit
. Typ unit
se podobá void
typu v jazycích, jako je C# a C++.
Typ unit
má jednu hodnotu a tato hodnota je označena tokenem ()
.
Hodnota unit
typu se často používá v programování jazyka F# k uložení místa, kde je hodnota požadovaná syntaxí jazyka, ale pokud není potřeba nebo není požadovaná žádná hodnota. Příkladem může být návratová printf
hodnota funkce. Vzhledem k tomu, že k důležitým akcím printf
operace dochází ve funkci, nemusí funkce vracet skutečnou hodnotu. Proto je návratová hodnota typu unit
.
Některé konstrukce očekávají unit
hodnotu. Očekává se například, že do
vazba nebo jakýkoli kód na nejvyšší úrovni modulu se vyhodnotí jako unit
hodnota. Kompilátor hlásí upozornění, když do
vazba nebo kód na nejvyšší úrovni modulu vytvoří jiný výsledek než unit
hodnota, která se nepoužívá, jak je znázorněno v následujícím příkladu.
let function1 x y = x + y
// The next line results in a compiler warning.
function1 10 20
// Changing the code to one of the following eliminates the warning.
// Use this when you do want the return value.
let result = function1 10 20
// Use this if you are only calling the function for its side effects,
// and do not want the return value.
function1 10 20 |> ignore
Toto upozornění je charakteristické pro funkční programování; nezobrazuje se v jiných programovacích jazycích .NET. V čistě funkčním programu, ve kterém funkce nemají žádné vedlejší účinky, je konečná návratová hodnota jediným výsledkem volání funkce. Proto pokud je výsledek ignorován, je to možná programovací chyba. I když jazyk F# není čistě funkční programovací jazyk, je vhodné dodržovat funkční programovací styl, kdykoli je to možné.