(rontolisp) docs
← マルチメソッドと階層

isa?

(isa? child parent) (isa? h child parent) (isa? vec1 vec2)

child が parent と関係するかどうかを返します。等価、要素ごとのベクター派生(各要素が対応するものへ isa?)、または階層 -- グローバルのもの、3 引数形式では h -- を通る祖先 membership のいずれかです。true か false を返し、multimethod のディスパッチ検索はこれの上に組み立てられています。

child や parent に書いたクラス名は、defmethod と同じく class がその値に答える キーワードです。String は :string、record はそのタグ、throwable やストリームのクラスは その名前です。throwable やストリームのクラスのキーワードは、オラクルの Java の継承と同じく インタフェースを含む各スーパータイプとそれらの派生先に isa? です。どのクラスも Object に isa? です。インタプリタと JVM では、ホストオブジェクトの class はそのクラスオブジェクトを 返し、それは継承・実装する各クラスとそれらの派生先に、どの綴りでも isa? です。 (isa? (class (java.util.ArrayList.)) java.util.List) は true です。