嵌套的语法;如有其他",;在SML中
我正在努力实现SML中的嵌套if-else表达式。任何人都可以突出显示它的语法。假设有三个条件C1,C2,C3,我需要在C代码中等价于下面的条件嵌套的语法;如有其他",;在SML中,sml,smlnj,Sml,Smlnj,我正在努力实现SML中的嵌套if-else表达式。任何人都可以突出显示它的语法。假设有三个条件C1,C2,C3,我需要在C代码中等价于下面的条件 if (C1) { return true; } else { if(C2) { return true; } else { if (C3) { return true; } else { retu
if (C1) {
return true;
}
else {
if(C2) {
return true;
}
else {
if (C3) {
return true;
}
else {
return false;
}
}
}
我尝试了以下方法,但它被视为“if,else if,and else”案例
你说得对。两个代码片段是等价的
通过一点缩进,SML示例看起来更像是使用嵌套的if/else
:
if C1 then true
else
if C2 then true
else
if C3 then true
else false
您还可以使用括号,使SML示例看起来与C示例几乎相同,但这不是必需的
当然,SML中最惯用的方式是写
C1 orelse C2 orelse C3
您可以对C代码使用相同的技巧。请记住,在
if/else
块中返回true/false
是代码气味。我同意使用orelse
是正确的方法,但作为对更复杂的组合进行操作的替代方法,模式匹配将能够帮助您
fun funtrue (false,false,false) = false
| funtrue _ = true
或者作为案例陈述
case (C1,C2,C3) of
(false,false,false) => false
| _ => true
它被视为“如果,如果,如果,和其他”案例。你这是什么意思?您的C代码也是“if,else if,else”。
case (C1,C2,C3) of
(false,false,false) => false
| _ => true