人们为什么定义对象扩展其伴侣类?

Saw*_*yer 8 scala

我发现这种代码在Lift框架中很常见,写得像这样:
object BindHelpers extends BindHelpers {} 这是什么意思?

par*_*tic 6

在这种情况下,BindHelpers是一个特质,而不是一个类.让我们foo()成为一个定义的方法BindHelpers,你也可以访问它.

  1. 通过伴侣对象使用它: BindHelpers.foo()

  2. BindHelpers在类中混合特征,从而能够访问其中的方法.

例如:

class MyClass extends MyParentClass with BindHelpers {
  val a = foo()
}
Run Code Online (Sandbox Code Playgroud)

ShouldMatchers例如,在Scalatest中使用相同的技术.


Fel*_*ura 2

扩展它的伴生类是很有趣的,object因为它将具有与该类相同的类型。

如果object BindHelpers没有扩展 BindHelpers,它将是 类型BindHelpers$

  • 那么这会增加什么价值呢? (6认同)