Udostępnij za pośrednictwem


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.

Zobacz też