Typ jednostki
Typ unit
jest typem wskazującym brak określonej wartości; unit
typ ma tylko jedną wartość, która działa jako symbol zastępczy, gdy nie istnieje żadna inna wartość lub jest potrzebna.
Składnia
// The value of the unit type.
()
Uwagi
Każde wyrażenie języka F# musi mieć wartość. W przypadku wyrażeń, które nie generują interesującej wartości, używana jest wartość typu unit
. Typ unit
przypomina void
typ w językach takich jak C# i C++.
Typ unit
ma jedną wartość, a ta wartość jest wskazywana przez token ()
.
Wartość unit
typu jest często używana w programowaniu języka F#, aby przechowywać miejsce, w którym wartość jest wymagana przez składnię języka, ale gdy żadna wartość nie jest potrzebna lub wymagana. Przykładem może być zwracana wartość printf
funkcji. Ponieważ ważne akcje printf
operacji występują w funkcji, funkcja nie musi zwracać rzeczywistej wartości. W związku z tym wartość zwracana jest typu unit
.
Niektóre konstrukcje oczekują unit
wartości. Na przykład do
powiązanie lub dowolny kod na najwyższym poziomie modułu ma zostać obliczone unit
na wartość. Kompilator zgłasza ostrzeżenie, gdy do
powiązanie lub kod na najwyższym poziomie modułu generuje wynik inny niż unit
wartość, która nie jest używana, jak pokazano w poniższym przykładzie.
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
To ostrzeżenie jest cechą programowania funkcjonalnego; nie jest ona wyświetlana w innych językach programowania .NET. W programie czysto funkcjonalnym, w którym funkcje nie mają żadnych skutków ubocznych, ostateczna wartość zwracana jest jedynym wynikiem wywołania funkcji. W związku z tym, gdy wynik jest ignorowany, jest to możliwy błąd programowania. Chociaż język F# nie jest czysto funkcjonalnym językiem programowania, dobrym rozwiązaniem jest stosowanie stylu programowania funkcjonalnego, jeśli jest to możliwe.