前回でIDEの使い方がわかったので、コーディングの効率がかなり増しました。
これで足場は揃ったので、今回からはscalaの要素等を色々試していこうと思います。
で、今回はActorです。
使ったコードは下記の通り。ネタはお察しください(笑
ネタの関係上、Actorに渡すクラス群の名称は全てラテン語になってます。
■Homo.scala
package jp.gr.kmtn.scalatutorial.incubator
/**
* 「人間」クラス
*
* @author Fukushi-
*/
abstract class Homo(name: String) {
/**
* 名前を文字列型で返す抽象メソッド
*/
def getName(): String
}
■Puella.scala
package jp.gr.kmtn.scalatutorial.incubator
/**
* 「少女」クラス
*
* @author Fukushi-
*/
class Puella(name: String) extends Homo(name) {
/**
* 初期化時の名前を取得し、返す。
*/
def getName(): String = { this.name; }
}
■PuellaMagi.scala
package jp.gr.kmtn.scalatutorial.incubator
/**
* 「魔法少女」クラス
* 動作は「少女」クラスに準ずる
*
* @author Fukushi-
*/
class PuellaMagi(name: String) extends Puella(name) {
}
■Puer.scala
package jp.gr.kmtn.scalatutorial.incubator
/**
* 「少年」クラス
*
* @author Fukushi-
*/
class Puer(name: String) extends Homo(name) {
/**
* 初期化時の名前を取得し、返す。
*/
def getName(): String = { this.name; }
}
■Incubator.scala
package jp.gr.kmtn.scalatutorial.incubator
import scala.actors.Actor
/**
* Actor確認用クラス。キュゥべぇ。
*
* @author Fukushi-
*/
object Incubator extends Actor {
/**
* メッセージ待ち受けメソッド
*/
def act() {
loop {
receive {
case puellaMagi: PuellaMagi =>
Console.println(puellaMagi.getName() + "、やがて「魔女」になる君たちのことは「魔法少女」と呼ぼう。");
case puella: Puella =>
Console.println(puella.getName() + "、僕と契約して魔法少女になってよ。");
case homo: Homo =>
Console.println(homo.getName() + "、残念ながら君には用は無いなぁ。");
case "exit" =>
Console.println("それじゃあね。"); exit;
exit;
case any: Any =>
Console.println("訳が分からないよ。");
}
}
}
}
上記がパーツで、実際に実行するプログラムエントリポイントは下記の通り。
■IncubatorMain.scala
package jp.gr.kmtn.scalatutorial.incubator
/**
* Actor確認用Mainクラス
*
* @author Fukushi-
*/
object IncubatorMain {
/**
* Actor確認用プログラムエントリポイント
*/
def main(args: Array[String]): Unit = {
// Actor起動
Incubator.start();
Incubator ! new Puella("鹿目 まどか")
Incubator ! new PuellaMagi("美樹 さやか")
Incubator ! new Puer("上条 恭介")
Incubator ! "UnKnown"
Incubator ! "exit"
}
}
実行すると、下記の結果となります。
鹿目 まどか、僕と契約して魔法少女になってよ。
美樹 さやか、やがて「魔女」になる君たちのことは「魔法少女」と呼ぼう。
上条 恭介、残念ながら君には用は無いなぁ。
訳が分からないよ。
それじゃあね。
とりあえず、解説は次投稿で。
駄目ネタで試すScala Actor ~魔法少女まどか☆マギカ編~
登録:
コメントの投稿 (Atom)
0 コメント:
コメントを投稿