5

実存型または型パラメータバインド失敗

trait Foo[S <: Sys[S]] 

は私がする方法があるとしFooで呼び出されました。

def invoke[S <: Sys[S]](foo: Foo[S]) =() 

モデルの更新タイプがFooを担持DAサブタイプ:モデルオブザーバーを登録する

sealed trait Update 
case class Opened[S <: Sys[S]](foo: Foo[S]) extends Update 

ヘルパー関数:

def observe(pf: PartialFunction[Update, Unit]) =() 

ここで、以下に障害が発生した:

observe { 
    case Opened(foo) => invoke(foo) 
} 

と 、 FooinvokeUpdateOpenedobserveが与えられている場合、私は、一部の機能を修正するにはどうすればよい

Fooに値または型メンバーを追加することはできます。

observe { 
    case Opened(foo) => invoke(foo.asInstanceOf[Foo[~] forSome { type ~ <: Sys[~] }]) 
} 

は明らかにこれは恐ろしいではなく好ましい解決策であるので、私は他の回答を待っています:

答えて

関連する問題