Buscar..


Sintaxis

  • . te permite acceder a métodos de instancia
  • .- permite acceder a campos de instancia
  • .. macro expandiéndose a múltiples invocaciones anidadas de .

Observaciones

Como lenguaje alojado, Clojure proporciona un excelente soporte de interoperabilidad con Java. El código Clojure también se puede llamar directamente desde Java.

Llamando a un método de instancia en un objeto Java

Puede llamar a un método de instancia utilizando el . forma especial:

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

Puedes llamar a métodos de instancia con argumentos como este:

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

Hacer referencia a un campo de instancia en un objeto Java

Puede llamar a un campo de instancia utilizando la .- sintaxis:

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

Creando un nuevo objeto Java

Puede crear una instancia de objetos de una de estas dos maneras:

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

O

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

Llamando a un método estático

Puedes llamar métodos estáticos como este:

(System/currentTimeMillis)
;;=> 1469493415265

O pasar en argumentos, como este:

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

Llamando a una función de Clojure desde Java

Puede llamar a una función Clojure desde el código Java buscando la función e invocándola:

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

Esto busca la función * desde el espacio de nombres clojure.core y la invoca con los argumentos 2 y 2.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow