値を継続的に更新する手順があります。現在の値の操作を定期的に照会できるようにしたいと考えています。私の特定の例では、すべての更新は改善と見なすことができ、手順は最終的に最良の回答に収束しますが、中間結果へのアクセスが必要です。ループの実行速度と収束にかかる時間が重要です。
例として、次のループを考えてみましょう。
var current = 0
while(current < 100){
current = current + 1
}
ループの繰り返しで現在の値を取得できるようにしたい。
アクターを使用したソリューションは次のようになります。
class UpdatingActor extends Actor{
var current : Int = 0
def receive = {
case Update => {
current = current + 1
if (current < 100) self ! Update
}
case Query => sender ! current
}
}
become または FSM を使用して var を取り除くこともできますが、この例はより明確な IMO です。
あるいは、1 つのアクターが操作を実行し、すべてのループ反復で更新された結果を別のアクターに送信することもできます。別のアクターは、値の更新とそれに関するクエリへの応答だけを担当します。私は Akka の「エージェント」についてあまり知りませんが、これは 1 つの潜在的な使用例のようです。
Scalaを使用してこれを行うためのより良い/代替方法は何ですか? アクターを使用する必要はありません。それは頭に浮かんだ1つの解決策に過ぎませんでした。