为什么人们定义对象扩展它的同伴类?

我觉得这样的代码是在电梯框架中,这样写的很常见:
object BindHelpers extends BindHelpers {}这是什么意思?

--------------解决方案-------------

在这种情况下, BindHelpers是一个特征,而不是一类。 让foo()中定义的方法BindHelpers ,要么访问就可以了。

  1. 使用它通过同伴对象: BindHelpers.foo()
  2. 混合特质BindHelpers中的一类,因而能够访问它里面的方法。

例如:

class MyClass extends MyParentClass with BindHelpers {
val a = foo()
}

同样的技术在Scalatest用于ShouldMatchers为实例。

你可以找到大卫·波拉克的答案liftweb组中同样的问题。

有趣的是为一个object来扩展它的同伴类,因为它将具有相同的类型的类。

如果object BindHelpers没有延伸BindHelpers,这将是类型BindHelpers$

它可能是这里的图案是其他。 我不知道电梯回答这个问题,但有一个问题object ,因为它们都没有mockable。 所以,如果你在一个定义的一切class ,它可以被嘲笑,然后只是使对象扩展它,你可以嘲笑类,并用它来 ​​代替你的内部测试的对象。

分类:斯卡拉 时间:2012-06-04 人气:0
本文关键词: 斯卡拉
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.320 (s). 10 q(s)