在F#中,匹配表达式可以“掉进”另一个匹配吗?像在C#或C ++中一样?

问题描述 投票:0回答:2

在C ++中,您可以使用switch / case构造并省略case语句中的break以使执行通过下一个case进行。

在C#中,这是通过goto情况完成的。

可以在F#中完成吗?

一个C#示例来说明:

switch (a)
case "a":
    ...
    break;
case "b":
    ...
    goto case "a"
case "c":
    ...

我想像是:

match x with
| "a" -> ...
| "b" -> ...  + goto "a"

一个实际的例子是:

  • “ a”执行一些操作
  • “ b”重置计数器,然后执行与“ a”]相同的操作
  • 并且您希望避免代码重复,但也要将代码放入外部函数中。

在C ++中,您可以进行switch / case构造,并省略case语句中的break以使执行通过下一个case进行。在C#中,这是通过goto情况完成的。可以在F#中完成吗? C#...

f# switch-statement
2个回答
4
投票

F#是一种基于表达式的语言,因此它没有像goto这样的命令性功能。但是,您仍然可以表达相同的逻辑。首先,您可以组合“案例”:


0
投票
let aFun() = ...
let bFun() = ...
let abFun() = aFun >> bFun
© www.soinside.com 2019 - 2024. All rights reserved.