構文の間違いはコードエディタから指摘が入るのでコンパイルには至りませんが、GML はインタプリタであるという仕様上、データ型の不一致ではコンパイルエラーになりませんしコンパイル前にエラーとして検出されません。
通常、変数は同じ型同士で無ければ計算や等価比較が成り立たないため、例えば数値の1
と文字列の"1"
はそのままでは足し算に使えないし、等価ではありません。
var a = 1; var b = "1"; var c = a + b;
上記式はコンパイル中エラーにならない、しかしウィンドウズ PC ではビルド実行後、三行目 var c
が実行された時点で「型の不一致に依るエラー」※と成ります。
※ ただしコンパイラに依存するためエラーが出ない場合もあります。これは処理系依存です。
a
+ b
演算子を挟んで左辺と右辺の型が一致しない場合、どちらかの型に変換して同じ型同士になるようキャストすればエラーもなく計算できます。
今回はその「キャスト」に関するお話です。
明示的型の変換
明示的な型変換をキャストと言います。GML では大雑把な型の概念しか無いため明示的な型変換は極めて単純で
- string(文字列型)
- real(実数型)
上記二種類がキャストのほぼ全てです。
数値型はリアル( real )= 実数型なので、この数値型は無理数と有理数の全てを含みます。つまり浮動小数も整数も負数も区別が無くゴッチャにして扱う数値の闇鍋みたいな型です。
その代わりこの変数型一つで非常に広い範囲の数を扱うことができます。ある意味、数に関しては万能な型。
変数の型を調べるためには専用の関数を用います。