【发布时间】:2020-04-06 02:08:10
【问题描述】:
如果给定不合适的参数,我想尽早退出函数 Javascript 中的命令式解决方案很优雅:
arg=>{
if(arg>limit) return 42;
//perform complex operations
return x+y
}
ReasonML 作为一种函数式语言没有return,因此我将所有内容都填充到单个表达式中:
arg=>{
let helper=()=>{
//complex operations here
; x+y
}
(arg>limit) ? 42 : helper()
}
现在,这可行,但我不想只返回 42,而是想在 Js.Log("!CORNER CASE!") 中填充。我怎样才能做到这一点?在 C 语言中,我可以写成 (arg>limit) ? (Js_Log("..."),42) : helper(),但在 ReasonML 中,这变成了一个元组并且无法编译。
OCaml 可以做到begin printf "msg" ; 42 end,但分号在原因中对我不起作用:(Js.log("TEST");42) -- 无法编译!
或者,我需要 ReasonML 中的 K-combinator。
【问题讨论】:
标签: control-flow reason k-combinator