文字列と文字列は計算と同じく + 演算子で結合できます。同じ型同士である必要があるため、文字列と数値の結合は必ずどちらかの型に合うようキャストする必要があります。

var a = "http://prester.org/gms/?page_id=";
var b = 3055;
var c = a + string( b );
if mouse_check_button_pressed("mb_left") url_open(c);

明示的に行われる型変換をキャストと呼びます。これとは対照的にコンパイラなどが暗黙的に行う型変換があって、こちらは「暗黙的型変換」としてキャストとは区別されます。

暗黙的型の変換

暗黙的型変換は自動的に型を変換する処理なので、結果はコンパイラの仕様に沿うとしか言えません。

つまり安全性についての保証が無いです。

GM:Studio では必然的に外部出力モジュールを使って異なったコンパイラが利用される前提となっているため、ウィンドウズ PC では安全に機能していた暗黙的型変換が、他のコンパイラでも同じ挙動をするかどうかについての保証はありません。

暗黙的型変換の実例

var a = 100;
draw_text(x, y, a); // 暗黙的型変換で数値を文字列として表示

上記例の場合、文字列として表示する関数内であえて実数型のまま引数を与えています。

コンパイラは型の不一致を検出せず、しかし内部的に型変換されるらしくコンパイル後の実行でもエラーは出ません。正常に動作します。

var a = 100;
draw_text(x, y, string(a)); // 明示的な型の変換(推奨される方法)

安全性という点では明示的に型を変換したほうが確実に良い。

強制型変換(コアーション

数値と文字列の結合はキャスト無しだと確実にエラーが出ますが、利用するエクスポート・モジュールによってはエラーが出ずに強制的型変換が機能する場合もあります。

var a = "100";
var b =  200;
var c =  a+b;

上記は型の不一致ですがコンパイラは型の不一致を検出はしません。実行時にエラーと成りますが、これもコンパイラ次第では実行後もエラーとならずに強制型変換の結果が表示される場合があります。

参考 (YoYoGames):draw_text

参考 :型の不一致

次のページへ

Leave a Reply

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