2013-08-07 2 views
6

zurückgeben Wie kann ich unit von einem Ausdruck in f # zurückgeben? Zum Beispiel:Wie Einheit aus einem Ausdruck in 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 

Antwort

9

Das folgt (nur) Einheitswert in F # geschrieben wird als

() 

So Ihr Code

... 
| None ->() 
wird
7

Schreiben Sie einfach () als

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

Halten in Anbetracht der Einheit Wert (), ist es in vielen Situationen praktisch.

In diesem Fall könnten Sie iter Funktion von Option module verwenden:

Option.iter Console.WriteLine readInt 

Es unterstreicht auch die Tatsache, dass iter Funktionen (zB solche, die aus Seq, List und Array Modul) finden Sie immer den Einheitswert geben () .