3
解釋一個例子:在Scala中,如何在包含類之外爲嵌套類型創建工廠?
class A {
def f = {
val b: B = C.factory(this).asInstanceOf[B]
}
class B
}
object C {
def factory(a: A): A#B = new a.B
}
C.factory
是創建A#B
的新實例的功能。由於B
是嵌套類型,因此我在函數簽名中包含了一個A
引用。調用函數f
必須投射從factory
返回的引用,這是我想避免的。沒有演員我得到:
error: type mismatch;
found : A#B
required: A.this.B
謝謝!是的,我想我的工廠函數返回a.B,但正如你所說,這不會編譯。 –
您可以使用選項'-Ydependent-method-types'來啓用依賴方法類型,而無需其餘的實驗功能。這個功能沒有官方支持,但也許會改變。 –