1

akka を含むコードは次のとおりです。

def receive = {
   case idList: List[ActorRef] => idList.foreach(x => x ! Msg)
}

Sbt は次のように不満を述べています。

non-variable type argument akka.actor.ActorRef in type pattern List[akka.actor.ActorRef] is unchecked since it is eliminated by erasure
[warn]     case idList: List[ActorRef] => idList.foreach(x => x ! Msg)

どうすればこれを取り除くことができますか?

4

1 に答える 1

6

実行時List[Whatever]に は と同等List[Any]であるため、アクタはリストを受け取ったことを理解できますが、それが のリストであることは理解できませんActorRef。これは JVM の問題であり、Scala や Akka のせいではありません。

次の 2 つの選択肢があります。

1) に置き換えて無視ActorRefする_

case idList: List[_] => ...

2) データ構造にラップする (推奨)

case class Ids(idList: List[ActorRef])

2 番目の選択肢では、リストのパラメトリック タイプをチェックせずに Id をチェックできます。

def receive = {
   case Ids(idList) => idList.foreach(x => x ! Msg)
}
于 2013-07-31T20:51:18.117 に答える