在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。
谢谢
发布于 2019-12-17 18:37:33
IIFE可以工作:
(a => (b => a + b)(a + 20))(10)
发布于 2019-12-17 18:53:59
最接近的是lambda / arrow函数,它是在spot中调用的。
来自Haskell: Where vs. Let的示例(因为我不知道Haskell)
f x y| y>z = ... | y==z = ... | y
可能是这样的
((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 | ...
是某种带有谓词的切换语句(实际上不会转换为JS的switch
)。
发布于 2019-12-17 18:50:28
您可以创造性地使用Javascript的默认参数:
const _let = f => f();
const main = _let((a = 10, b = a + 20) =>
a + b);
console.log(main);
请注意,默认参数不是递归计算的,即左参数不能依赖右参数。
https://stackoverflow.com/questions/59372334
复制相似问题