12

如何unit从 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
4

3 回答 3

20

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

()

所以你的代码变成

...
| None -> ()
于 2013-08-07T06:21:19.067 回答
9

()如下

match readInt with
    | Some(v) -> Console.WriteLine(v)
    | None -> ()
于 2013-08-07T06:20:55.683 回答
5

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

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

Option.iter Console.WriteLine readInt

它还强调了这样一个事实,即函数iter(例如来自Seq和模块的函数)将始终为您提供单位值。ListArray()

于 2013-08-07T08:16:24.170 回答