oop - Scala 中的模式匹配如何克服 switch case 导致的重复?

标签 oop scala design-patterns

注意:我问这个问题是出于好奇,而不是质疑语言功能的重要性。

看起来是向命令式编程世界的人们介绍的一个很棒的功能。
我是 Scala 的新手,仍然试图找出所有的地方,让它的大量构造适合并且可以被利用。

模式匹配绝对可以比 switch 案例做得好 100 倍。
但是,自从 OOP 出现以来,它仍然是一个案例结构,我们习惯于使用多态性。

所以简而言之,我发现难以理解的是,如果 switch case 鼓励重复,我们最好将与 case 相关的代码编写到各自的类中,那么 Scala 的模式匹配如何克服这个问题?

我们仍然可以为各种情况使用类或泛型类,并再次利用多态性来满足我们的需要。

最佳答案

这是对象和数据结构之间差异的问题。

如果您正在处理对象,请使用子类型多态性 - 添加新类型不需要重新编译、重新测试或重新部署现有类型,而添加新算法(接口(interface)上的方法,位于层次结构的顶部)则需要.

如果您正在处理数据结构,请使用模式匹配 - 添加新算法不需要重新编译、重新测试或重新部署现有算法,而添加新类型则需要。

了解更多信息 here .

关于oop - Scala 中的模式匹配如何克服 switch case 导致的重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11628852/

相关文章:

java - 如何从匿名内部类访问非最终变量?

c# - 局部变量和从方法调用的变量之间的区别? C#

scala - 零参数的抽象类和没有参数的抽象类有什么区别?

scala - 拆分字段并从一行 Spark-Scala 创建多行

scala - Apache-Spark 内部作业调度

php - 使用路由器映射多个路由( Controller )

c++ - 使用 ostream 和枚举类型重载 <<

c - 在 erl_driver 中列出和检查端口的正确位置是什么

design-patterns - 这个 UI 模式的名称是什么?

c++ - 对象 A 是 B 的成员,对象 B 是 A 的成员