使用'惯用'进行编程Scala是使用'具体类'可选/冗余?

时间:2017-03-06 18:20:16

标签: scala class oop traits typeclass

我刚刚进入函数式编程领域,正在使用Scala。

在获得高级工程师的Type Classes模式指导后,我正试图在设计scala程序时围绕具体类的“需要”。

工程师告诉我,在过去3年多的Scala编程中,他从来没有像在OOP / Java领域那样使用“类”。只是特征,案例类和实现特征的“对象”以及偶尔用于抽象类。

这引出了以下问题:

  1. 如果按照上面的惯用类型方法进行操作,那么“类”(即Java中的具体类)的使用是否被大大淡化(或者没有实际意义)?也就是说,如果你需要做一些必要的事情,那么它们才重要,否则几乎可以完全淡化。

  2. 如果#1不完全正确,那么什么是好的反例?

  3. 据我所知,上述模式来自Haskell,本质上更具功能性。这是否意味着,虽然Scala是一种混合语言,但如果你选择纯粹的功能(a.k.a.惯用)方法,那么OOP类真的位于后座?

  4. 我理解由于构造函数参数,抽象类仍然有用。但是,我的问题是需要通过类在OOP领域组织代码。

1 个答案:

答案 0 :(得分:-2)

案例类不能扩展另一个案例类,因此如果将来某些类可能需要扩展给定的类C,那么C不应该是案例类。