はじめに
今回はCurl言語のデータ型について説明します。Curlは変数に型指定が必要な言語です。厳密な型指定を行いながら、一方でとても柔軟なデータ型の利用が可能になっています。Curl言語で使用するデータ型と、データ型を構築する仕組みであるTypeクラスについて見ていきましょう。
これまでのTips
データ型
Curlのデータ型は、プリミティブ型、クラス型、プロシージャ型、列挙型、null型、void型、any型の7種類があります。すべてのデータ型はオブジェクトとして扱うことができます。それでは、1つ1つのデータ型の特徴を説明します。
プリミティブ型
プリミティブ型は、文字、数値、論理値など基本的なデータを表します。非常にシンプルな構成をとっており、Curl言語のコアに直接実装されています。そのため処理が高速です。
プリミティブ型はデータそのものと考えられ、メソッドはありません。規定値(変数を宣言した時点での値)を持ち、null値をとることができません。プリミティブ型には以下のものがあります。
符号付き整数型(int、 int8、 int16、 int32、 int64)
符号付きの整数、プラスとマイナスの両方の数字を扱えます。int(integer) にデータを表現するために使用するビット数を追加して型を表します。int型はint32型と同じ型になります。規定値はすべて0です。
符号無し整数型(uint、 uint8、 uint16、 uint32、 uint64)
符号無しの整数、プラスの数字のみを扱えます。マイナスの値をとりませんので、ビット毎のフラグに使ったり、符号付整数型よりも大きな正の数を扱う場合に使います。int と同じように、unit (unsigned integer)にデータを表現するために使用するビット数を追加して型を表します。uint型はuint32型と同じ型になります。規定値はすべて0です。
浮動小数点型(float、 double)
符号付きの実数を扱います。数値を持つ精度と値の表す範囲によって、float(32bit)、 double(64bit) の指定があります。規定値はすべて0.0です。浮動小数点型には、正の無限大を表す infinity、 負の無限大を表す -infinity、 数値でない値を表す nan (not a number) があります。
ブール値(bool)
true か false かを表す論理値を扱います。規定値はfalseです。1bitの大きさです。
文字(char)
文字を扱います。文字はunicodeで保持されます。1文字のコードを表しています。文字列ではありません。規定値は、文字コード 0 です。
数量(deg、 rad、 px、 m、 in、 ...)
Curl では「数量」と呼ばれる単位を含めた数値をプリミティブ型の変数として定義できます。三角関数などを利用する場合は、角度の単位として値を指定する必要があります。数量はSI単位系に変換されて、float または double 値として内部的に保持されます。測定単位は同じですが、精度が異なります。基本的には、double型を利用する事を推奨しています。単位には、G(ギガ)、M(メガ)、K(キロ)、m(ミリ)などのプレフィックスと組み合わせて利用できます。