データ型¶
データ型¶
TJS2 には変数に「型」はありませんが、内部的には型を持っています。型を持たないと言うよりは、型が自動的/動的に扱われるということです。
内部の型としては、void, 整数型、実数型、文字列型、オブジェクト型、オクテット列型があります。
void¶
void は、何も表していないことを表します ( JavaScript とは意味が違います )。宣言したての変数は void です。
void 同士の比較には、=== (識別) 演算子を用います。
**typeof** 演算子は、これに対しては "void" を返します。
整数型¶
TJS2 は整数型として 64bit の精度の整数を扱うことができます。整数は通常符号あり整数として扱われますが、唯一の例外として **>>>** 演算子は、左辺を符号なし整数として扱います。
typeof 演算子は、これに対しては "**Integer**" を返します。
実数型¶
TJS2 は実数型として 64bit の精度の実数 ( 倍精度実数 ) を扱うことができます。
typeof 演算子は、これに対しては "**Real**" を返します。
文字列型¶
TJS2 は長さ制限のない、ゼロ終結文字列を扱うことができます。ゼロ終結文字列とは、\0 で文字列が終わると仮定して文字列を扱うと言うことです。
内部文字コードは UTF-16LE で、1 文字あたり 16bit 固定で保持されます。BMP 範囲外の文字は サロゲートペア で表現されます。
typeof 演算子は、これに対しては "**String**" を返します。
文字列に対して使えるメソッド・プロパティの一覧は 文字列 を参照してください。
オブジェクト型¶
オブジェクト型は、オブジェクトを保持する型です。new 演算子で確保したオブジェクトのほか、関数、クラス、プロパティオブジェクトなどはすべてオブジェクト型になります。
typeof 演算子は、これに対しては "**Object**" を返します。
TJS や JavaScript と異なり、TJS2 のオブジェクト型は、オブジェクトそのものへのポインタと、それが使用されるべきコンテキストとなるオブジェクトのポインタの2つのポインタを内部に持っていて、いわゆるクロージャを実現できるようになっています。このコンテキスト部分を変更する演算子が incontextof 演算子です。
特に以下のクラスは TJS2 の構文中に専用の即値表記を持っており、頻繁に登場します。
- 配列 ( Array クラス ) — 順序を持つ要素列。式中で
[ ... ]と書くとその場で生成できます。 - 辞書配列 ( Dictionary クラス ) — 文字列キーから値への対応。式中で
%[ ... ]と書くとその場で生成できます。 - 正規表現パターン ( RegExp クラス ) — 文字列の照合・置換用パターン。
/.../の形でリテラル記述できます。
オクテット列型¶
オクテット列型は、8bit 幅のデータ列 (オクテット列型) をあつかう型です。主にバイナリデータを扱うための型です。
typeof 演算子は、これに対しては "**Octet**" を返します。
オクテット列に対して使えるメソッド・プロパティの一覧は オクテット列 を参照してください。