かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

手軽なスクリプト言語としての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メソッドでイベント発行という流れです。
簡単ですね。メモメモ。