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)
}
と 、
Foo
、
invoke
、
Update
、
Opened
と
observe
が与えられている場合、私は、一部の機能を修正するにはどうすればよい
。 Foo
に値または型メンバーを追加することはできます。
observe {
case Opened(foo) => invoke(foo.asInstanceOf[Foo[~] forSome { type ~ <: Sys[~] }])
}
は明らかにこれは恐ろしいではなく好ましい解決策であるので、私は他の回答を待っています: