変数は動的型付けなので便利な点もありますが、不便な点もあります。

GML の扱う変数は実際にデータを代入するまで型が決定されておらず、最初は数値を記憶していた変数にあとから文字列を記憶させることもできます。変数をいきなり配列として扱うこともできます。

このエントリーをはてなブックマークに追加

GML の変数は動的 (dynamic typing) に型が決定されるので、変数として最初に宣言して代入されたデータ型がプログラム終了までずっと同じデータ型で利用されるかについての保証は一切ありません。

コンパイラも型の不一致による演算をエラーとして検出せず、型の不一致に依るエラーはアプリケーションをビルドしてエラー箇所が実行されるまでエラーとして検出されません。

では実際にどのような型があるのか見てみましょう。

型 (type) 日本語 詳細
Strings 文字列型 文字および文字列として
Real Numbers 実数型 有理数の全て、無理数の全てを含む
Arrays 配列 一次元および二次元配列まで
Booleans ブーリアン true と false だが、GML の特殊仕様では定数と同じ(型としては存在しない
Pointers ポインタ メモリアドレスだが GMS では Buffer や Texture など特定の部分でのみ利用可能
Enums 列挙型 定数のリストを定義できる特殊な変数型、グローバルとして機能する
Undefined 未定義/Null まだ定義されていない、存在しないことを示す。データ構造とかにしか使えなくね?という疑問


データ型を調べる場合は関数を使って調べます。

なんか足りなくね?

Boolean を調べる手段が用意されていません。GML では概念だけで Boolean の型は存在しません

Enums はもともと定義も曖昧な型なので調べる意味がないから型判定は無くても良いのですが、Boolean は GMS の現在の仕様上、ブール型として調べる手段はありません。

定数である truefalse は数値である 10 と等価です。

ここから抜粋

Note that currently GameMaker: Studio does not support “true” boolean values, and actually accepts any real number below 1 as a false value, and any real number equal to (or greater than) 1 as being true. This does not mean however that you should be checking 1 and 0 (or any other real number) for true and false, as you are also provided with the constants true and false which should always be used in your code to prevent any issues should real boolean data types be added in a future update.

ここまで抜粋

定数としての truefalse は実数型の 10 と区別が付きません。

現在の仕様だとブール型は実装されていないという事に成ります。

    (true == 1)&&(false == 0)

これが成り立つけれど、

var a=true; が ブール型なのかについては
var a=1; (a==true) が成り立つので変数型としてのブール型は区別ができません。

    GM_studio_14_bool_check

次のページへ

Leave a Reply

Your email address will not be published. Required fields are marked *