手続き変数を使う Spinelでは、手続き変数という機能があります。 この手続き変数は、使い方によってはかなり強力な機能となります。 手続き変数とは？ まず手続きについて説明しようと思います。 Spinelでは、手続きは関数とほぼ同じ意味です。 厳密には関数は戻り値を返しますが、手続きは戻り値を返さない(返せない)ものです。 「手続き」という言葉を使うのはこの手続き変数のみです。 手続き変数とは、手続きを変数に代入できる機能です。
手続き変数
    1
    2
    3
    4
    5
    Proc = {
      Mes("手続き変数です。");
    }

    Proc.Call;
このように、代入する文を「{}」で囲んで変数に代入します。 呼び出すときは、「変数名.Call」と書きます。 いままで勉強してきた知識から言うと、はっきり言ってムダな構文です。 なぜなら...
書き換え
    1
    2
    3
    4
    5
    function Proc(){
      Mes("関数");
    }

    Proc;
↑とまったく同じだからです。 ですから、上の例のように「Proc.Call」のように直接呼び出して使うものではありません。 もちろん、そのように使ってもいいのですが。 手続き変数の利用法 では、手続き変数の便利な使い方をお教えします。 Spinelでは、イベントというものがあります。 イベントとは、ボタンをクリックした、マウスが動いた、などの動作の際に行われる処理を言います。 このイベントは、すでにイベントを使おうで使っています。
イベントの設定
    1
    2
    3
    4
    5
    6
    Event = {
      Mes("ボタンが押されました。");
    }

    Btn = CButton.Create;
    Btn.OnClick = Event;
こんな感じですね。イベントを使おうで使用したのは。 ですが、プロパティは変数と同じように使えるので
イベントの直接設定
    1
    2
    3
    4
    Btn = CButton.Create;
    Btn.OnClick = {
      Mes("ボタンが押されました。");
    }
このように、直接代入することも出来ます。 さらに高度な使い方 この手続き変数は、イベント以上に便利な使い方があります。 それは、関数の引数に文を渡すことが出来るという点です。 これが可能になることで、forやifのような制御構文のような関数を作ることも可能です。 では、早速関数を作ってみましょう。 今回作るのは、指定された回数だけ単純にループする関数です。 つまり、関数内でforを使い、指定回数だけCallするだけです。
ループ命令
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    function Loop(n,Proc){
      for(var i = 1;i <= n;Inc(i))
        Proc.Call; //呼び出し
    }

    //使う
    s = {
      Mes("ループ");
    }

    Loop(3,s);
こんなに簡単に出来ちゃいました。 こうやって引数に文を渡せるのは、使い方によっては非常に便利で効率の良い プログラムを作ることが出来るのです。

前へ / index / 次へ
プログラム言語「Spinel」
Copyright © 2005 - gabyou All Rights Reserved.
NOTES Software.