F # keyword ' Some' - что это значит?
F # ключевое слово "Некоторые"
Ответ 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 ...