How can i return unit from an expression in f#? For example:

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
有帮助吗?

解决方案

The (only possible) unit value in F# is written as

()

So your code becomes

...
| None -> ()

其他提示

Just write () as follows

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

Keep in mind the unit value (), it is handy in many situations.

In this case, you could use iter function from Option module:

Option.iter Console.WriteLine readInt

It also highlights the fact that iter functions (e.g. those from Seq, List and Array module) will always give you the unit value ().

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top