Тип Unit
Тип unit
— это тип, указывающий на отсутствие определенного значения; unit
тип имеет только одно значение, которое выступает в качестве заполнителя, если другое значение не существует или не требуется.
Синтаксис
// The value of the unit type.
()
Замечания
Каждое выражение F# должно оцениваться значением. Для выражений, которые не создают значение, которое имеет интерес, используется значение типа unit
. Тип unit
напоминает void
тип на таких языках, как C# и C++.
Тип unit
имеет одно значение, и это значение указывается маркером ()
.
Значение unit
типа часто используется в программировании F# для хранения места, где значение требуется синтаксисом языка, но если значение не требуется или не требуется. Примером может быть возвращаемое значение printf
функции. Так как важные действия printf
операции происходят в функции, функция не должен возвращать фактическое значение. Поэтому возвращаемое значение имеет тип unit
.
Некоторые конструкции ожидают unit
значения. Например, привязка или любой код на верхнем уровне модуля, как ожидается, do
будет оцениваться значением unit
. Компилятор сообщает предупреждение, когда do
привязка или код на верхнем уровне модуля создает результат, отличный от unit
используемого значения, как показано в следующем примере.
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
Это предупреждение является характеристикой функционального программирования; Он не отображается на других языках программирования .NET. В чисто функциональной программе, в которой функции не имеют побочных эффектов, окончательное возвращаемое значение является единственным результатом вызова функции. Таким образом, если результат игнорируется, это возможная ошибка программирования. Хотя F# не является чисто функциональным языком программирования, рекомендуется следовать функциональному стилю программирования всякий раз, когда это возможно.