2013-08-07 8 views
6

Làm cách nào tôi có thể trả về unit từ một biểu thức trong f #? Ví dụ:Cách trả lại đơn vị từ một biểu thức trong 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 

Trả lời

9

The (chỉ có thể) đơn vị giá trị trong F # được viết như

() 

Vì vậy, mã của bạn trở nên

... 
| None ->() 
7

Chỉ cần viết () như sau

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

Keep trong tâm trí giá trị đơn vị (), nó là tiện dụng trong nhiều tình huống.

Trong trường hợp này, bạn có thể sử dụng iter chức năng từ Option module:

Option.iter Console.WriteLine readInt 

Nó cũng nhấn mạnh thực tế rằng iter chức năng (ví dụ như những người từ Seq, ListArray mô-đun) sẽ luôn luôn cung cấp cho bạn những giá trị đơn vị () .