* 概要 [#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;
  }
}

}}

    ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS