2013-08-07 9 views
6

Jak mogę zwrócić unit z wyrażenia w f #? Na przykład:Jak zwrócić jednostkę z wyrażeń w f #

let readInt = 
     let str = Console.ReadLine() 
     let (succ, num) = Int32.TryParse(str) 
     match succ with 
     | true -> Some(num) 
     | _ -> None 

    match readInt with 
    | Some(v) -> Console.WriteLine(v) 
    | None -> ignore //i don't want to do anything, 
//  but i don't know how to ignore this brunch of the expression 

Odpowiedz

9

The (możliwe tylko) wartość jednostki w F # jest napisane jak

() 

Więc twój kod staje

... 
| None ->() 
7

Wystarczy napisać () następująco

match readInt with 
    | Some(v) -> Console.WriteLine(v) 
    | None ->() 
5

Zachowaj biorąc pod uwagę wartość jednostki (), jest ona przydatna w wielu sytuacjach.

W tym przypadku można użyć iter funkcji z Option module:

Option.iter Console.WriteLine readInt 

podkreśla również fakt, że iter funkcje (np tych z Seq, List i Array modułu) zawsze daje wartość jednostkową () .

Powiązane problemy