斯卡拉臂的項目,我看到這樣的代碼:「:」在類型參數
def managed[A : Resource : Manifest](opener : => A) : ManagedResource[A] = new DefaultManagedResource(opener)
有人能解釋的意義[A:資源:清單]
斯卡拉臂的項目,我看到這樣的代碼:「:」在類型參數
def managed[A : Resource : Manifest](opener : => A) : ManagedResource[A] = new DefaultManagedResource(opener)
有人能解釋的意義[A:資源:清單]
def managed[A : Resource : Manifest](opener : => A) : ManagedResource[A] = new DefaultManagedResource(opener)
意味着
def managed[A](opener : => A)(implicit r: Resource[A], m: Manifest[A]) : ManagedResource[A] = new DefaultManagedResource(opener)
你可以看看link text7.4語境界和下界查看以獲取更多信息。
使用一個更簡單的例子來說明:
def method[T : Manifest](param : T) : ResultType[T] = ...
記號T : Manifest
意味着存在綁定一個上下文。在程序中的其他地方,在範圍內,必須定義一個單標記或Manifest[T]
類型的值,並將其標記爲隱式。
這是由編譯器重寫方法簽名使用第二(隱含的)參數塊來實現的:
def method[T](param : T)(implicit x$1 : Manifest[T]) : ResultType[T] = ...
作爲你的實施例說明,多個上下文的邊界可以在相同的方法簽名中使用。也可以將它們與視圖邊界相結合。
http://stackoverflow.com/questions/2982276/what-is-a-context-bound-in-scala – retronym 2010-09-26 15:23:41