LoginSignup
1
0

More than 5 years have passed since last update.

引数、argument0 と argument[0] の違いは?

Posted at

環境 : Gamemaker Studio 2 (platform : HTML5)
結論 : argument0 必須の引数。argument[0] 任意の引数のとき。

こんばんは。Aki @aki_0o0_です。スクリプトで関数を定義した時に、引数を受取る書き方が2種類あったので、なにが違うのか調べました。

違い

argument[0]

値を渡し忘れたら、実行するまでエラーにならない。ので気づくのが遅れる。

例えば、こういう関数を用意します。

draw_score_optional.gml
///@param posx
///@param posy
///@param num

var posx = argument[0];
var posy = argument[1];
var num = argument[2];

draw_score_optional(x, y, 999);
こう呼ぶとするとき、

draw_score_optional();
引数を書き忘れても、
特に何も表示されずに、コンパイルも通って、
実際その処理の呼び出しが実行されるまでエラーにならないんですね。

argument0

値を渡し忘れたら、エディタで書きながらエラーが表示されるので、分かりやすい。
そのままコンパイルすると、コンパイルエラーにしてくれる。親切!

例えば、

draw_score_required.gml
///@param posx
///@param posy
///@param num

var posx = argument0;
var posy = argument1;
var num = argument2;

draw_score_required(x, y, 999);
こう呼ぶとするとき、

draw_score_required();
引数を書き忘れたら、エディタで赤くなるからすぐわかる。
もしそのままコンパイルしても、エラーになって修正するまでは実行されないから、すぐに気づけますね。

デフォルト引数を使って省略できる

じゃあこっち(argument[0])は要らない子なのかというと、そんなこと無いです
どんな時に使うかというと、デフォルト引数を使いたい時です。

draw_score_default_argument.gml
///@param posx
///@param posy
///@param num
///@param color

var posx = argument[0];
var posy = argument[1];
var num = argument[2];

var color = c_white;
if (argument_count >= 4) {
    color = argument[3];
}

draw_score_default_argument(x, y, 999);
白色で良い時、

draw_score_default_argument(x, y, 999, c_red);
色を指定したい時

終わり

というわけで、
必須の引数は、argument0
任意の引数は、argument[0]
を使うと良いと思います

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0