2011-02-14 89 views

回答

2

object擴展其伴侶類是有趣的,因爲它將具有與類相同的類型。

如果object BindHelpers未延伸BindHelpers,它將是BindHelpers$類型。

+6

那麼這增加了什麼價值? – 2011-02-14 12:16:54

+1

例如提供默認實現。 – Landei 2011-02-14 13:18:40

2

可能是這裏的模式是其他模式。我不知道Lift是回答這個問題的,但是object有一個問題,那就是他們不是可以嘲笑的。所以,如果你定義了一個可以被模擬的class中的所有東西,然後讓對象擴展它,你可以模擬這個類並在測試中使用它來代替對象。

6

在這種情況下,BindHelpers是一個特質,而不是一個類。假設foo()是一個在BindHelpers中定義的方法,您也可以訪問它。

  1. 使用它通過同伴對象:BindHelpers.foo()

  2. 混合性狀BindHelpers的一類,因而能夠訪問它裏面的方法。

例如:

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

相同的技術在Scalatest用於ShouldMatchers例如。