「デリゲート」の版間の差分
ページの作成:「デリゲートは、AliceScriptにおける”匿名関数”のメカニズムです。デリゲートは匿名関数として、その場ですぐに実行したり、…」 |
編集の要約なし |
||
39行目: | 39行目: | ||
print("Hello,World!"); | print("Hello,World!"); | ||
} | } | ||
SayHello.Invoke();//出力例:Hello,World | SayHello.Invoke();//出力例:Hello,World! | ||
==デリゲートの組み合わせ== | ==デリゲートの組み合わせ== | ||
50行目: | 50行目: | ||
var Say = SayHello+SayBonjur; | var Say = SayHello+SayBonjur; | ||
Say.Invoke(); | Say.Invoke(); | ||
//出力例:Hello,World | //出力例:Hello,World! | ||
// :Bonjur | // :Bonjur | ||
==イベント駆動型プログラム== | |||
イベント駆動型プログラムは例えば「キーボードが押下された」とか、「マウスが移動した」などの受動的なイベントの発生によってコードが実行されるプログラムです。AliceScriptでは、デリゲート型とその組み合わせによって実現できます。ここでは簡単なサンプルとして、1秒おきにHello,Worldを表示し続け、それをeキーが押下されたときに停止するプログラムを作成します。このコードでは非同期的に1秒前にHello,Worldを表示し続け、同時に同期的にキーの押下を待機し続け、なんらかのキーが押下されたときに<code>OnkeyDown</code>にキーの情報を渡して呼び出します。 | |||
var OnKeyDown; | |||
(_(){ | |||
//非同期に実行されるコード | |||
while(true) | |||
{ | |||
OnKeyDown(Console_ReadKey()); | |||
} | |||
}).BeginInvoke(); | |||
//OnKeyDownに次のコードをイベントハンドラとして登録します | |||
OnKeyDown+=_(key) | |||
{ | |||
if(key==“e”) | |||
{ | |||
exit; | |||
} | |||
} | |||
while(true) | |||
{ | |||
print(“Hello,World”); | |||
delay(1000); | |||
} |