(rontolisp) docs
← 数値と述語

instance?

(instance? Class x)

x がそのクラスのインスタンスのとき true です(オラクルの isInstance と同じ)。クラスや インタフェースは、オラクルでのクラスがそれ自身であるか、それを実装する種類の値すべてについて 答えます。java.util.List はベクタ・リスト・遅延 seq、java.util.Map はマップと record、 clojure.lang.IFn は関数・キーワード・シンボル・マップ・セット・ベクタ・var、Comparable は 文字列・数値・キーワード・ベクタ、java.io.Writer は *out* について true です。Object は nil 以外のすべての値です。既知の record/deftype 名はディスパッチタグの検査になります。 プロトコルのインタフェース(user.P。名前空間と名前はオラクルと同じく munge され、 my_app.core.my_p のようになります)は、本体でそのプロトコルを挙げた record・deftype・reify について、メソッドの有無によらず true です。extend-type や extend-protocol の対象は インスタンスではありません(satisfies? は true です)。 throwable クラス(Exception、IllegalArgumentException、clojure.lang.ExceptionInfo、 ドット付きや import した名前)は、例外と実行時エラーをそのクラス(class が返すクラス)か そのサブクラスであるかで検査します。インタプリタと JVM ではホストのオブジェクトをホストの クラスで検査するので、(instance? java.io.File (java.io.File. "x")) と (instance? Number (java.math.BigDecimal. "1")) は true です。ここではどの値もインスタンスに ならないクラス(Clojure の値に対する java.io.File、Integer)は false、どのクラスでもない 名前は unknown name になります。