首页 > 解决方案 > 函数式编程如果

问题描述

我喜欢函数式编程概念,但我认为很多时候代码变得更大更混乱。

例如,如果您有这样的代码(JS):

let str = user.status == 'is_admin' ? 'active user' : 'user inactive';

用更少或相似的代码长度在 FP 风格中做到这一点是非常困难的。

例如在 FP 伪库中:

let str = F.if(F.propEq('status', 'is_admin'), 'active user', 'user inactive'))(user)

但是您会看到它比命令式样式多约 10 个字符。

如果可以缩短,您有什么建议吗?

代码只是示例,但我注意到在许多情况下 FP 样式比命令式代码更长。

标签: javascriptfunctional-programming

解决方案


三元运算符函数式编程风格。它不仅仅是一个命令式语句,它是一个表达式。它返回一个结果值,并且不依赖副作用来工作。每种函数式编程语言都有类似的东西,包括像 Haskell 这样的“超纯”语言。

您不能用三元运算符做的唯一功能样式的事情是将它传递给高阶函数或从高阶函数返回。假设出于某种奇怪的原因,您有一个高阶函数,例如:

function runAdminFunction(f) {
  return f(is_admin, 'active user', 'user inactive');
}

你可以打电话runAdminFunction(F.if),但你不能打电话runAdminFunction(?)。函数式编程库F.if在此类情况下是为了完整性,而不是因为在像您的示例这样的情况下使用它而不是三元运算符被认为更具可读性或更好的函数式风格。


推荐阅读