2016-04-10 5 views
1

私はScalaで実装する必要があるJavaプログラムを持っていますが、私はScalaにとって非常に新しいです。多くのSO質問&の回答を読んだだけでなく、Googleが検索したいくつかのケースクラスのリソースを読んだ後も、私が受け取ったメッセージへの参照を取得する方法はまだ分かりません。サンプルコードは以下の通りです:Scala/Akka受信したメッセージをどのように参照していますか?

case class SpecialMessage(key: Int) { 
    val id: Int = Main.idNum.getAndIncrement().intValue() 
    def getId(): Int = { 
    return id 
    } 
} 

その後、別のクラスの私はその番号を参照しようとしています受信中:

def receive() = { 
    case SpecialMessage(key) { 
    val empID = ?? getId() // Get the id stored in the Special Message 

    // Do stuff with empID 
    } 
} 

私がするために、EMPID =の右側の光景を置くために何を把握することはできませんそのidを取得します。これは本当にシンプルなのでしょうか、それとも普通に行われていないことですか?

答えて

3

これらは、あなたがやりたい

case msg: SpecialMessage => { 
    val empID = msg.getId() // Get the id stored in the Special Message 
    // Do stuff with empID 
} 
case msg @ SpecialMessage(key) => { 
    val empID = msg.getId() // Get the id stored in the Special Message 
    // Do stuff with empID 
} 
+0

ありがとうございました!私はそれが簡単だろうと思ったが、私はどこでもそれに関する情報を見つけることができなかった。どうもありがとうございます! – smkarber

+0

ようこそ。 –

0

ピムの答えは良いです最高合ったものを選ぶための2つの方法があります。 しかし、多分あなたはあなたがパターンマッチングから直接IDを取得することができます

case class SpecialMessage(key: Int,val id: Int = Main.idNum.getAndIncrement().intValue()) 

ようSpecialMessageの構造を変更することができます。

def receive() = { 
    case SpecialMessage(key, empID) { 
    // Do stuff with empID 
    } 
} 
関連する問題