如何从f#中的表达式返回单位

时间:2013-08-07 06:18:58

标签: f# unit-type

如何从f#中的表达式返回unit?例如:

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

3 个答案:

答案 0 :(得分:11)

F#中的(仅可能)单位值写为

()

所以你的代码变成了

...
| None -> ()

答案 1 :(得分:7)

只需按以下方式编写()

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

答案 2 :(得分:5)

请记住单位价值(),在许多情况下都很方便。

在这种情况下,您可以使用Option module中的iter函数:

Option.iter Console.WriteLine readInt

它还强调了iter函数(例如来自SeqListArray模块的函数)将始终为您提供单位值()的事实