(rontolisp) docs
← cl パッケージの関数

type-of

(type-of object)

値の型名をシンボルで返します。defstruct/CLOS インスタンスには構造体/クラスの「名前」を返し、それ以外の値には組み込み型名のシンボル (integer、string、cons など) を返し、該当がなければ t になります。class-of がクラスメタオブジェクトとして返すものの「名前だけ」のビューであり、(type-of x) と (class-name (class-of x)) は一致します。別のパッケージで定義されたクラスは、呼び出し側がどのパッケージにいても、パッケージ修飾された名前 (エクスポートされていればコロン 1 個、されていなければ 2 個) を返します。

配列だけは複合型指定子を返すため、ランクと要素型を読み取れます。simple でない配列 — フィルポインタ付き、:adjustable t、displaced のいずれか — は、ランク 1 なら (vector ELEMENT-TYPE SIZE)、それ以上のランクなら (array ELEMENT-TYPE DIMENSIONS) です。simple な配列は、要素型が t の 1 次元配列なら (simple-vector SIZE)、それ以外 (次元リストが nil になるランク 0 配列を含む) は (simple-array ELEMENT-TYPE DIMENSIONS) です。要素型は array-element-type が返す昇格後の型なので、:element-type 'fixnum で作った配列は t として読み出されます。文字列はアトミックな string を返します。