clojure
Java interop
Поиск…
Синтаксис
-
.
давайте обратимся к методам экземпляра -
.-
давайте обратимся к полям экземпляра -
..
макрос расширяется до нескольких вложенных вызовов.
замечания
В качестве размещенного языка Clojure обеспечивает отличную совместимость с Java. Код Clojure также можно вызывать непосредственно из Java.
Вызов метода экземпляра объекта Java
Вы можете вызвать метод экземпляра, используя .
специальная форма:
(.trim " hello ")
;;=> "hello"
Вы можете вызвать методы экземпляра с такими аргументами:
(.substring "hello" 0 2)
;;=> "he"
Ссылка на поле экземпляра объекта Java
Вы можете вызвать поле экземпляра, используя синтаксис .-
:
(def p (java.awt.Point. 0 1))
(.-x p)
;;=> 0
(.-y p)
;;=> 1
Создание нового объекта Java
Вы можете создать экземпляр объектов одним из двух способов:
(java.awt.Point. 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]
Или же
(new java.awt.Point 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]
Вызов статического метода
Вы можете вызвать статические методы следующим образом:
(System/currentTimeMillis)
;;=> 1469493415265
Или перейдите в аргументы, например:
(System/setProperty "foo" "42")
;;=> nil
(System/getProperty "foo")
;;=> "42"
Вызов функции Clojure из Java
Вы можете вызвать функцию Clojure из Java-кода, просмотрев функцию и вызвав ее:
IFn times = Clojure.var("clojure.core", "*");
times.invoke(2, 2);
Это ищет функцию *
из пространства имен clojure.core
и вызывает ее с аргументами 2 & 2.
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow