我发现这种代码在Lift框架中很常见,写得像这样:
object BindHelpers extends BindHelpers {}
这是什么意思?
答案 0 :(得分:6)
在这种情况下,BindHelpers
是一个特征,而不是一个类。让foo()
成为BindHelpers
中定义的方法,您也可以访问它。
通过配套对象使用它:BindHelpers.foo()
在类中混合特征BindHelpers
,从而能够访问其中的方法。
例如:
class MyClass extends MyParentClass with BindHelpers {
val a = foo()
}
例如,在Scalatest中使用相同的技术{.1}。
答案 1 :(得分:3)
您可以在liftweb组中找到同一问题的David Pollak's answer。
答案 2 :(得分:2)
object
扩展其伴侣类很有意思,因为它与类的类型相同。
如果object BindHelpers
未扩展BindHelpers,则其类型为BindHelpers$
。
答案 3 :(得分:2)
这里的模式可能是其他模式。我不知道Lift会回答这个问题,但object
存在问题,因为它们不可模仿。因此,如果您在class
中定义了可以模拟的所有内容,然后只是让对象扩展它,您可以模拟该类并使用它而不是测试中的对象。