序数型
数値型
- 符号付き整数
int8,int16,int32,int64,int(intはポインターのサイズと同じです) - 符号無し整数 符号付き整数の型の先頭それぞれに
uを付けた物
それぞれのデータの最後に'i32, 'u64のようなサフィックスをつけることでデータのサイズを変更することが出来ますが、通常必要はありません。
型推論では、通常のint型はlow(int32)からhigh(int32)の範囲の値で、それ以外はint64になります。
また、0xXX, 0oXX, 0bXX or 0BXXを使用することでそれぞれ16進数、8進数、2進数を表すことが出来ます。
アンダースコア_を使うことで可読性を上げることもできます。
var
a: int = 0x0A
b: int64 = 127'i64
c = 0o10
d = 0b0101_0101
intはマシンのポインタサイズに依存するので、例えばサイズごとに異なる挙動をさせたりすることが可能です。
when sizeof(int) == 2:
echo "running on a 16 bit system!"
elif sizeof(int) == 4:
echo "running on a 32 bit system!"
elif sizeof(int) == 8:
echo "running on a 64 bit system!"
else:
echo "cannot happen!"
文字型
- 文字
char基本的にuint8のエイリアスタイプです
charはシングルクォーテーション'で一文字を囲むことで表現します。
charのサイズは1バイトなので、普通はUTF-8を扱うことは出来ないのですが、Nimは結果的にUTF-8を適切に処理することができます。
内部でarray[char, int]やset[char]の型を使用して効率的に処理しています。
また、unicodeモジュールを使用することでRune型が使用できるようになり、それは任意のUnicode文字を直接表現することができます。
const test = "test"
var
a = 'a'
b = test[1] # e
ブーリアン型
- ブーリアン
bool
Nimのブーリアン型は、trueとfalseの2種類のみです。
主に条件分岐などで使用します。
また、0や1などの数値を暗黙的にboolに変換することはできませんが、0.boolなどのようにすることで変換することが出来ます。
const
zero = 0
one = 1
if zero == 0:
echo "zero"
else:
echo "not zero"
if one.bool:
echo "true"