プログラミング Ruby 多数にわたる命令の呼び出し方


This topic contains 0件の返信, has 1件の返信, and was last updated by  ライシェス 9 年 4 ヶ月.

  • 命令の呼び出しにはif ~ elsifcase ~ when で呼び出すことが多いかと思います。しかし、それが5~10程度ならまだしも、50~100となると管理が非常に面倒となります。 そこで、効率的な呼び出し方を説明します。

    まずは、命令が command001 ~ command999 と1000通り用意されていると仮定します。if ~ elsif や case ~ whenでは管理が極端に大変となります。そこで共通点が commandという文字からなります。次のように呼び出します。

    def call_command( no )

      __send__(sprintf(“command%3d”,no))
    end

    たったこれだけで、1000種類にもわたる命令を呼び出すことができるようになります。

    ここでの元は__send__(method)メソッドです。これは指定した文字列またはシンボルを呼び出すメソッドです。これで命令を呼び出しているわけですね。

    sprintf([str],[arg]…)メソッドは、Cでいうsprintfと同様の役割をするメソッドです。一番目の引数にどのような文字列を出力するかの指定、2番目以降に数値や文字列などの可変領域を決定する値を入れます。

    如何でしたでしょうか?RGSSではイベントコマンドやキャラクターの歩き方で応用できるかと思います。

    次に命令がばらばらのときを説明します。 この時は予めHashを用います。

    COMMAND_HASH ={ 1 => :play , 2 => :stop , 3 => :replay } COMMAND_HASH.default =:stop

    次にこのようにコマンドを呼び出します。

    def call_command(no)

      __send__(COMMAND_HASH[no])

    end

    これで、あらかじめ定義してあった命令を呼び出すことができます。

このナレッジに返信するにはログインしてください。