F # ключевое слово "Некоторые" - PullRequest
36 голосов
/ 16 января 2009

F # ключевое слово ' Некоторые ' - что это значит?

Ответы [ 3 ]

46 голосов
/ 16 января 2009

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

  1. Some, который содержит значение некоторого типа.
  2. None, что означает отсутствие значения.

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

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

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

let stringRepresentationOfSomeObject (x : 'a option) =
    match x with
    | None -> "NONE!"
    | Some(t) -> t.ToString()
7 голосов
/ 16 января 2009

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

1 голос
/ 11 августа 2017

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

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

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

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

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

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

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