型に対する自己反映的操作 (Reflective Operations on Types)

次の操作は型とオブジェクトの情報を返す。

instance? object type => boolean [Function]
instance?は、objecttypeの一般インスタンスなら、真を返す。

subtype? type1 type2 => boolean  [Function]
subtype?は、type1type2の直接もしくは間接の部分型であるか、 type1type2が同じ型なら、真を返す。

object-class object => class    [Function]
object-classは、objectがその直接インスタンスであるようなクラスを返す。
all-superclasses class => sequence [Function]
all-superclassesclassのすべての上位クラスを列にして返す。 列内のクラスの順序には意味がある。列の最初の要素は常にclassであり、 <object>が常に最後の要素となる。

返された列を破壊的に変更してはならない。そのようなことをすると予期せぬ振る舞いを 引き起こす可能性がある。もし、 classがシールされているなら、処理系はすべての 上位クラスの列を返す代わりに型<sealed-object-error>のエラーを発信するという 実現を選択してもよい。

direct-superclasses class => sequence  [Function]
direct-superclassesclassの直接上位クラスを列にして返す。これらは classが作られたとき、makeまたはdefine classに引数として渡された クラスである。列内でのクラスの順序は、classが創られた時にmakeまたは define classにそれらが引数として渡された時の順序と同じである。

返された列を破壊的に変更してはならない。そのようなことをすると予期せぬ振る舞いを 引き起こす可能性がある。もし、classがシールされているなら、処理系はすべての 直接上位クラスの列を返す代わりに型<sealed-object-error>のエラーを 発信するという実現を選択してもよい。

direct-subclasses class => sequence   [Function]
direct-subclassesclassの直接下位クラスを列にして返す。これらは classを直接上位クラスに持つクラス達である。クラスの順序に意味はない。

返された列を破壊的に変更してはならない。そのようなことをすると予期せぬ振る舞いを 引き起こす可能性がある。[1]もし、classがシールされているなら、 処理系はすべての直接下位クラス達を返す代わりに型<sealed-object-error>の エラーを発信するという実現を選択してもよい。


[1]クラスから部分クラスへのポインタは弱リンク(weak link)に よるので、部分クラスは参照がなくなればごみ集めされる。
目次 索引 クラス(章見出し)、 オブジェクトの強制変換と複製(次節)