F # ключевое слово "Некоторые"

F # keyword ' Some' - что это значит?

Ответ 1

Some не является ключевым словом. Однако существует тип option, который представляет собой дискриминационный союз, содержащий две вещи:

  • Some, который содержит значение некоторого типа.
  • None, который представляет собой недостаток значения.

Он определяется как:

type 'a option =
    | None
    | Some of 'a

Он действует как тип с нулевым значением, где вы хотите иметь объект, который может хранить значение какого-либо типа или вообще не иметь значения.

let stringRepresentationOfSomeObject (x : 'a option) =
    match x with
    | None -> "NONE!"
    | Some(t) -> t.ToString()

Ответ 2

Можно проверить Дискриминационные союзы в F # для получения дополнительной информации о DU в целом и типа опции (Some, None) в частности. Как сказано в предыдущем ответе, Some - это просто случай объединения типа < 'a > , который является особенно распространенным/полезным примером алгебраического типа данных.

Ответ 3

Some используется для указания типа опции, или, другими словами, типа, который может или не может существовать.

F # отличается от большинства языков в том, что поток управления в основном выполняется с помощью соответствия шаблонов в отличие от традиционной логики if/else.

В традиционной логике if/else вы можете увидеть что-то вроде этого:

If (isNull(x)) { do ...
} else { //x exists do ...
}

В соответствии с логикой сопоставления с образцом, нам нужен аналогичный способ выполнения определенного кода, если значение равно NULL или синтаксис F #, Нет

Таким образом, мы имели бы тот же код, что и

match x with | None -> do ... | Some x -> do ...