* 概要 [#r6930bf3] #contents ** このページについて [#ie2b0c1a] AngelScript(以下AS)を全く知らない人が,ASについてなんとなく理解してもらえるような記事を書きます。 細かいことについては各ページを参照してください。 ** 特徴 [#laa17591] - 静的型付け。 - 構文がC++にとても似ている。 - C/C++バインディング可能。 - コールーチン対応。 *** 構文がC++にとても似ている [#e7d5afb5] 構文がC++にとても似ているため,C++経験者であれば構文について少し勉強するだけでコーディングを始められます。 また,C++ソースコードをメインとして使用するプロジェクトでは ASソースコードとC++ソースコードの2つをコーディングしていくことになります。 そのような状況で,両者の構文が似ているため,頭を大きく切り換える必要がないため,混乱が少なくて済みます。 以下がASのソースコードの例です。 #code(c,){{ // Vector3型の宣言。 class Vector3 { // メンバ変数の宣言 // public,privateなどのアクセス修飾子はありません float x; float y; float z; // コンストラクタ Vector3(float aX, float aY, float aZ) { mX = aX; mY = aY; mZ = aZ; } // デストラクタ ~Vector3() { } // メンバ関数 void add( const Vector3 &in aVec // 引数にconstや参照修飾子を付けることができます ) { mX += aVec.x; mY += aVec.y; mZ += aVec.z; } // constメンバ関数もあります float sum()const { return mX + mY + mZ; } // 演算子のオーバーロードもできます // これは += をオーバーロードしています Vector3@ opAddAssign( const Vector3 &in aVec ) { add( aVec ); return this; } }; // セミコロンはあってもなくても可能。 // グローバル変数 int globalInt32Value = 0; // グローバル関数 void func() { // 組み込み型の紹介 int8 int8val; int16 int16val; int int32val; int32 int32val2; int64 int64val; uint8 uint8val; uint16 uint16val; uint uint32val; uint32 int32val2; uint64 uint64val; bool boolVal; float floatVal; double doubleVal; // 変数は明示的に初期化値を指定できます int initializedValue = 10; // 初期化値を指定しないと0(boolはfalse)で初期化されるようです // D言語やC#のように未初期化変数が発生しなくていい感じです int notInitializedValue; // 0で初期化される // if-else文が使えます int ifElseValue = 3; if ( ifElseValue == 4 ) { } else { } // for文が使えます for ( int i = 0; i < 10; ++i ) { if ( i < 5 ) { continue; // continueが使えます } break; // breakが使えます } // while文が使えます while ( true ) { break; // continue/breakが使えます } // do-while文が使えます do { break; // continue/breakが使えます } while( false ); // switch文が使えます int switchVal = 2; switch( switchVal ) { case 1 : break; case 2 : break; default : break; } } }} |