【发布时间】:2017-07-26 11:29:59
【问题描述】:
我已经为此苦苦挣扎了一段时间。我有一个可能是组合的匹配模式。比如下面的代码:
let processoperatorchange t2s proc op op2=
let rec poc p = match p with
| Zero -> "0"
| In(chan, var, _, p, _) -> chan^"("^var^")"^op2^(poc p)
| Out(chan, value, p, _) -> chan^"<"^(v2s value)^">"^op^(poc p)
In 和 Out 可能出现在一个实例中。有什么办法可以说
let processoperatorchange t2s proc op op2=
let rec poc p = match p with
| Zero -> "0"
**| In(chan, var, _, p, _) && Out(chan, value, p, _) -> chan^("^var^")"^op2^(poc p)**
| Out(chan, value, p, _) -> chan^"<"^(v2s value)^">"^op^(poc p)
【问题讨论】:
-
我认为你想要或模式:
| In(c, v, _, p, _) | Out(c, v, p, _) -> ...。请注意,变量在每种情况下都必须具有相同的类型,您的代码建议可能并非如此。 -
谢谢,我之前试过这个,但由于我的变量不同,这个条件对我不起作用。不过谢谢你
-
你说它们可能在一个实例中发生是什么意思?
-
我的程序将从用户那里获取输入,并根据这些输入来评估匹配的情况。在某些情况下,用户可以结合两种情况,例如“In”和“Out”或“In”和“Timer”。
-
变量 p 必须是“In”或“Out”。不能两者兼有,除非有一种结合了两者的类型。
标签: ocaml