Sök…


Syntax

  • . låt dig komma åt instansmetoder
  • .- låt dig komma åt instansfält
  • .. makro expanderar till flera kapslade invokationer av .

Anmärkningar

Som värdspråk ger Clojure utmärkt interoperabilitetsstöd med Java. Clojure-kod kan också ringas direkt från Java.

Ringa en instansmetod på ett Java-objekt

Du kan ringa en instansmetod med hjälp av . speciell form:

(.trim " hello ")
;;=> "hello"

Du kan kalla instansmetoder med sådana argument:

(.substring "hello" 0 2)
;;=> "he"

Referera ett instansfält på ett Java-objekt

Du kan ringa ett instansfält med hjälp av .- syntax:

(def p (java.awt.Point. 0 1))
(.-x p)
;;=> 0
(.-y p)
;;=> 1

Skapa ett nytt Java-objekt

Du kan skapa exempel på objekt på ett av två sätt:

(java.awt.Point. 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]

Eller

(new java.awt.Point 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]

Ringa en statisk metod

Du kan kalla statiska metoder så här:

(System/currentTimeMillis)
;;=> 1469493415265

Eller skicka in argument, så här:

(System/setProperty "foo" "42")
;;=> nil
(System/getProperty "foo")
;;=> "42"

Ringa en Clojure-funktion från Java

Du kan ringa en Clojure-funktion från Java-kod genom att slå upp funktionen och åberopa den:

IFn times = Clojure.var("clojure.core", "*");
times.invoke(2, 2);

Detta ser upp * -funktionen från clojure.core namnområdet och åberopar den med argumenten 2 och 2.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow