構文 - Script Language Edit

Last-modified: 2010-03-24 (水) 22:24:36

このページについて Edit

AngelScript(AS)のスクリプト構文について書きます。
(このページに書かれているサンプルコードの一部はAngelScript公式のドキュメントから転載しています。)

字句 Edit

コメント Edit

C++と同様に1行コメント,ブロックコメントの2種類が使えます。

すべてを展開すべてを収束
  1
  2
  3
  4
 
 
 
 
// 1行コメント
/*
 ブロックコメント
*/

Edit

組み込み型 Edit

C++と同等の組み込み型が用意されています。

void
C++と同様に関数の戻り値に型に使います。
bool
C++と同様のもので,true,falseのどちらかの値を持ちます。
整数
下記のタイプが存在します。
型名最小値最大値
int8-128127
int16-3276832767
int
int32
-21474836482147483674
int64-922337720368547758089223372036854775807
uint80255
uint16065535
uint
uint32
04294967295
uint64018446744073709551615
公式のドキュメントによると,パフォーマンスの最適化をするために
32bitより小さい型の値はクラスのメンバ変数など,データを保持するもののみに使用し,
それ以外(ローカル変数,一時変数など)は32bitの型の値を使用したほうがいいようです。
小数
下記のタイプが存在します。
型名値の範囲一番小さい正の値最大桁数
float+/- 3.402823466e+381.175494351e-386
double+/- 1.7976931348623158e+3082.2250738585072014e-30815
公式のドキュメントによりますと,ASではNaN(Not-aNumber)を0x7fc00000で表現しているようです。

配列 Edit

配列の変数は次のように宣言します。

すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
// int型の配列を宣言
int[] intArray;
 
// int型の配列を3つ宣言
int[] intArrA,intArrB,intArrC;
 
// 何も初期化子を指定しなければ,長さ0の配列を作ります
int[] a; // a.length() == 0
 
// 初期化子に数を指定すると,その数の長さの配列を作ります
int[] b(3); // b.length() == 3
 
// 配列初期化子を指定すると,それがコピーされた配列を作ります。
int[] c = {1,2,3}; // 先頭から1,2,3がコピーされた配列

配列はC++と同様にインデクス式を使ってアクセスします。
また,配列の長さはlength()メソッドにより取得できます。

すべてを展開すべてを収束
  1
  2
  3
  4
  5
 
 
-
|
!
int[] a = {0,1,2};
for ( uint i = 0; i < a.length(); ++i )
{
    a[i] += 1;
}

ユーザー定義型 Edit

ユーザー定義型(クラスや列挙型)はC++と同様に宣言することができます。

すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
 
 
 
 
 
 
// objという型のインスタンスが作られる
// デフォルトコンストラクタがあればそれが呼ばれる
obj a;
 
// objの一時変数を作成し,aに代入する
a = obj();

オブジェクトハンドル Edit

オブジェクトハンドルとはC++でいう参照・ポインタにあたるものです。
参照先のオブジェクトは参照カウンタで寿命を管理しているため,「既に破棄されたデータにアクセスする」という不正なデータアクセスはおこりません。
もしnullなオブジェクトハンドルにアクセスしようとしたら例外が発生しスクリプトの実行が止まります。

すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 
 
 
 
 
 
 
-
|
!
 
obj o;
obj@ a; // a はnullで初期化されます
obj@ b = @o; // oの参照をbに代入します
 
b.ModifyMe(); // o.ModifyMe()と同様のことがおこります
 
if ( a is null ) // nullかどうかチェックしています。
{
  @a = @b; // aにbが参照しているオブジェクトを代入します。この場合,結果的にoの参照が渡されています。
}

文字列 Edit

Edit

宣言文 Edit

式文 Edit

if文 Edit

for文 Edit

while文 Edit

do-while文 Edit

switch文 Edit

return文 Edit

スコープブロック文 Edit

Edit

代入式・代入演算式 Edit

関数呼び出し Edit

型変換式 Edit

算術演算式 Edit

ビット演算式 Edit

論理演算式 Edit

等値式 Edit

比較式 Edit

インクリメンタル式・デクリメンタル式 Edit

インデックス式 Edit

条件式 Edit

メンバアクセス Edit

オブジェクトハンドルアクセス Edit

丸括弧 Edit

スコープ解決 Edit

オブジェクトハンドル Edit

使い方 Edit

オブジェクトの寿命 Edit

ポリフォリズム Edit

関数 Edit

変数 Edit

interface - インターフェース Edit

import Edit

enum - 列挙型 Edit

typedef Edit

class - クラス Edit

使い方 Edit

演算式オーバーロード Edit

プロパティアクセサ Edit


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