私はフォーラムと Google を検索して、Scala の型消去の問題に対する回答を探しています。しかし、私の質問に答えるものは何も見つかりません。
ParamClass の型パラメーターに一致するオブジェクトのパターン マッチングに苦労しています。着信オブジェクトのタイプを bar メソッドにパターン一致させる必要があります。私は次のような解決策を見てきました
bar[X](a : X)(implicit m : Manifest[X])
これで問題は解決しますが、 bar メソッドはオーバーライドされたメソッドであるため、これを使用できません。(実際には、Akka アクター フレームワークの receive 部分関数です)。コードは以下のとおりで、一目瞭然です。
class ParamClass[A : Manifest] {
def bar(x : Any) = x match {
case a: A => println("Found A: " + a)
case _ => println("No match: " + x)
}
}
object ErasureIssue {
def main(args: Array[String]) {
val clz = new ParamClass[Int]
clz.bar("faf")
clz.bar(2.3)
clz.bar(12) // this should match, but does not
}
}
ErasureIssue.main(null)
この問題を解決するための助けをいただければ幸いです。私は Scala 2.9.1 を使用しています。
-J