ClojureDocs

导航

命名空间

instance?

clojure.core

自 1.0 起提供 (源代码)
  • (instance? c x)
Evaluates x and tests if it is an instance of the class
  c. Returns true or false
4 Examples
user=> (instance? Long 1)
true
user=> (instance? Integer 1)
false
user=> (instance? Number 1)
true
user=> (instance? String 1)
false
user=> (instance? String "1")
true
user=> (def al (new java.util.ArrayList))
#'user/al
user=> (instance? java.util.Collection al)
true
user=> (instance? java.util.RandomAccess al)
true
user=> (instance? java.lang.String al)
false
;; Some things are more than what they seem to be at first glance
user=> (instance? clojure.lang.IFn +)
true
user=> (instance? clojure.lang.Keyword :a)
true
user=> (instance? clojure.lang.IFn :a)
true
user=> (instance? clojure.lang.IFn {:a 1})
true
;; If `c` is specified with a literal class name, this is a Java
;; class name.  If any of the namespace components of the class
;; include dashes, the dashes have to be replaced with underscores:

(ns foo-bar)
(defrecord Box [x])
(def box (Box. 42))

(instance? foo-bar.Box box)
;=> CompilerException java.lang.ClassNotFoundException: foo-bar.Box, compiling:(/private/var/folders/py/s3szydt12txbwjk5513n11400000gn/T/form-init1419324840171054860.clj:1:1)
(instance? foo_bar.Box box)
;=> true

;; This rule doesn't apply to the last component of the class name:

(defrecord My-Box [x])   ; not an idiomatic choice
(def mybox (My-Box. 42))

(instance? foo_bar.My-Box mybox)
;=> true
See Also

Returns the :type metadata of x, or its Class if none

Added by kumarshantanu

Returns the immediate and indirect superclasses and interfaces of c, if any

Added by kumarshantanu

Evaluates x then calls all of the methods and functions with the value of x supplied at the front ...

Added by klauern

Returns the Class of x

Added by klauern

Returns true if x satisfies the protocol

Added by Dimagog

Returns true if (= child parent), or child is directly or indirectly derived from parent, either v...

Added by mars0i
0 Notes
No notes for instance?