在Haskell中,您可以为以下临时变量创建where条件:
f x
| cond1 x = a
| cond2 x = g a
| otherwise = f (h x a)
where
a = w x
是否可以在javascript中创建表达式,但表达式不是语句。
例如:
let a = 10;
let b = a + 20;
return a + b
这只是简单的示例,不需要临时变量,但这只是示例。
下面的示例带有语句-但我想知道表达式是否有很好的选择。
如果合适,可以使用Ramdajs。
谢谢
答案 0 :(得分:2)
IIFE将起作用:
(a => (b => a + b)(a + 20))(10)
答案 1 :(得分:1)
最接近的是当场调用的lambda / arrow函数。
Haskell: Where vs. Let中的示例(因为我不知道Haskell)
f x y | y>z = ... | y==z = ... | y<z = ... where z = x*x
可能类似于
((x,y)=>{
let z=x*x;
if(y>z){console.log("y>z");}
else if(y==z){console.log("y==z");}
else /*if(y<z)*/{console.log("y<z");}
})(10,20);
好吧,如果我正确理解f x y | ...
是带有谓词的某种switch语句(它们实际上不会转换为JS的switch
)
答案 2 :(得分:0)
您可以通过创造性的方式使用Javascript的默认参数:
const _let = f => f();
const main = _let((a = 10, b = a + 20) =>
a + b);
console.log(main);
请注意,默认参数不是递归计算的,即左侧参数不能依赖于右侧参数。