【发布时间】:2019-11-24 06:09:27
【问题描述】:
在 ocaml 中,我希望有许多嵌套的 if 语句和每个条件的返回值。代码变得像这样复杂。
let func arg1 arg2 =
if condition1 then arg1+arg2
else
(
//code1
if condition2 then arg1*arg2
else
(
//code2
if condition3 then arg1+arg2
else
(
//code3
)
)
)
我可以用这样的代码代替这样的嵌套语句吗?
let func arg1 arg2 =
if condition1 then arg1+arg2
//code1
if condition2 then arg1*arg2
//code2
if condition3 then arg1+arg2
//code3
【问题讨论】:
-
看起来你正在实现一个解释器,所以我猜
condition1等可以写成模式匹配子句,语言很好地支持它并避免嵌套条件(它们是更像switch,但更聪明)。回答一般问题:不,没有办法提前返回(除了例外)。您可以使用嵌套不明显的编码样式。 -
@coredump。不,我没有实现解释器。我只是举了这个例子来简化问题。我的实际返回值不同,示例中提到的 if 条件之间有很多代码行。
标签: if-statement return ocaml