かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

手軽なスクリプト言語としてのF# その4

さて、今回はちょっと次への布石としてC#とかでいうeventをどうやって定義するかということの元ネタとなるものを使ってみようと思います。その名もEventクラスやIEventインターフェースとかです。いかにもそれっぽいですよね。こいつらはIObservableとかも実装してるらしく色々面白いことが出来るようになってるらしいのですが、今回は基本的な使い方として、オブジェクトの生成とイベントハンドラの登録とイベントの実行をやってみようと思います。

// string型を引数として渡すイベントの元ネタを作成
let eventSource = Event<string>()

// Publishでイベントを作成
let event = eventSource.Publish

// イベントが呼ばれた時に呼ばれる関数を定義
let eventHandler s = printfn "event fire!! %s" s

// イベントハンドラを追加
event.Add eventHandler

// Triggerでイベント発行
eventSource.Trigger("ご〜!")

上から順番にコメントに書いてある通りです。これを実行すると以下のようになります。

event fire!! ご〜!

Eventインスタンスを作ってPublishでIEventインスタンスを取得してIEventのAddメソッドでイベントハンドラを登録。そしてEventのTriggerメソッドでイベント発行という流れです。
簡単ですね。メモメモ。