かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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