【发布时间】:2020-09-22 09:34:41
【问题描述】:
我一直在阅读要求使用 switch case 消除的干净代码书,所以我想在 JavaScript 中实现它,并且我想以函数式编程的方式使用它,所以我决定使用模式匹配。
我有下面的代码,我想省略switch case,我该怎么做,不使用多态。
function calculateSalary(role) {
switch (true) {
case /CTO/.test(role):
return getCTOSallary();
case /CEO/.test(role):
return getCEOSallary();
case /engineer/.test(role):
return getEngineeringSallary();
default:
return getGeneralSallary();
}
}
【问题讨论】:
-
模式匹配只与正则表达式远程相关。无论如何,这两个概念都是基于统一两个术语而不是依赖于相等的想法。 Javascript 不包括模式匹配。您可能会为原生类型开发一个统一算法,但它会非常低效并且可能仍然难以使用。
-
顺便说一句,建议避免使用
switch声明通常是荒谬的。 -
您可以在某种程度上伪造自定义数据类型的模式匹配,就像daggy 一样。但是这个技巧只适用于标记的构造函数。
标签: javascript functional-programming switch-statement pattern-matching