フューチャ トップ アクターのトレイト Reactor、ReplyReactor、Actor 制御構造 目次

制御構造

Reactor トレイトは戻り値を返さない react 演算のプログラミングを簡略化する制御構造を定義する。通常は、react の呼び出しは戻ってこない。もしアクターが続いてコードを実行したければ、アクターの継続コードを明示的に react に渡すか、継続を隠蔽する以下の制御構造を使わなければいけない。

最も基礎的な制御構造は andThen だ。これは、アクターが他の全てを実行した後で実行されるべきクロージャを登録する。

actor {
  {
    react {
      case "おはよう" => // processing "おはよう"
    }: Unit
  } andThen {
    println("あ、おはようございます")
  }
}

具体例で説明すると、上記のアクターは "おはよう" メッセージを処理した後、挨拶を表示する。react の呼び出しは戻ってこないが、andThen を用いて挨拶を表示する継続を登録することができた。

react の呼び出しに続いて「みなし型」(type ascription) が指定されることに注意してほしい(: Unit)。 これにより、react の戻り値型が Unit であるとみなすことができる。式の結果はいつでも外すことができるので、これは合法だ。andThenreact の戻り値型である Nothing のメンバーになれないため、このような記述が必要になる。react の戻り値型を Unit とみなすことで暗黙の変換 (implicit conversion) が適用され、andThen をメンバーとすることができる。

アクター API は他にもいくつかの制御構造を提供する:

制御構造は Reactoract メソッドの本文内、もしくは act により(直接、または間接的に)呼び出されたメソッドの本文内ならどこでも使うことができる。actor { ... } 記法により作成されたアクターは、制御構造を Actor からインポートする必要がある。


2010年11月30日

フューチャ トップ アクターのトレイト Reactor、ReplyReactor、Actor 制御構造 目次