2012-11-16 96 views
5

想象我有下面的類定義:通過名稱類型參數

class Foo[T] 

,我想做到以下幾點

def bar(x:Foo[ =>Int ]):Int = ??? 

但是編譯器失敗,「沒有這裏不允許按姓名參數類型「

如何使用名稱類型作爲泛型方法的類型參數?

回答

9

你將不得不提供你自己的懶包裝。是這樣的:

class Lazy[T](wrp: => T) { 
    lazy val value: T = wrp 
} 

然後:

def bar(x: Foo[Lazy[T]]): Int = ??? 
+0

什麼約'類懶惰[T](VAL值:=> T)'?無需重複持有人的價值。 – pedrofurla

+3

@pedrofurla。不允許(val參數不能按名稱調用)。如果是,在什麼時候價值應該被初始化? –

+1

奇怪。不知道。我想他們會在第一次通話時被初始化。 – pedrofurla

相關問題