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

Ключевое слово F# «Some» — что оно означает?


person Community    schedule 16.01.2009    source источник


Ответы (3)


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

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

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

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

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

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

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

person Brian    schedule 16.01.2009

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 ... 
person Alex Mapley    schedule 11.08.2017