Ключевое слово F# «Some» — что оно означает?
Ключевое слово F# "Некоторые"
Ответы (3)
Some
не является ключевым словом. Однако существует тип option
, представляющий собой размеченное объединение, содержащее две вещи:
Some
, который содержит значение некоторого типа.None
, который представляет отсутствие ценности.
Он определяется как:
type 'a option =
| None
| Some of 'a
Он действует как тип, допускающий значение NULL, когда вы хотите иметь объект, который может содержать значение некоторого типа или вообще не иметь значения.
let stringRepresentationOfSomeObject (x : 'a option) =
match x with
| None -> "NONE!"
| Some(t) -> t.ToString()
Дополнительную информацию о DU в в целом и тип параметра (Некоторые, Нет) в частности. Как говорится в предыдущем ответе, Some - это просто случай объединения типа option‹'a>, который является особенно распространенным/полезным примером алгебраического типа данных.
Some
используется для указания типа параметра или, другими словами, типа, который может существовать или не существовать.
F# отличается от большинства языков тем, что поток управления в основном осуществляется с помощью сопоставления с образцом, а не традиционной логики if/else.
В традиционной логике if/else вы можете увидеть что-то вроде этого:
if (isNull(x)) {
do ...
} else { //x exists
do ...
}
С логикой сопоставления шаблонов нам нужен аналогичный способ выполнения определенного кода, если значение равно null, или в синтаксисе F# None
Таким образом, у нас будет тот же код, что и
match x with
| None -> do ...
| Some x -> do ...