「デリゲート」の版間の差分

ページの作成:「デリゲートは、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);
  }