`

Clojure 支持Java

 
阅读更多

调用Java类

 

调用Constructor、Method、Field

(new classname)

 

(new java.util.Random)

    java.util.Random@4f1ada

 

(def rnd (new java.util.Random))

  #'user/rnd

 

(. class-or-instance member-symbol & args)

(. class-or-instance (member-symbol & args))


(. rnd nextInt)
    -791474443

(. rnd nextInt 10)
    8

(import [& import-lists])
; import-list => (package-symbol & class-name-symbols)

(import '(java.util Random Locale)
'(java.text MessageFormat))
    nil

Syntactic Sugar


(new Random)
==
(Random.)
最终结果相同,语法方式不同

(Classname/membername);static field or method

(. Math PI)
 Math/PI

(System/currentTimeMillis)
    1226260030788

(. rnd nextInt)
==
(.nextInt rnd)
想同,语法方式不同

(doto class-or-inst & member-access-forms)

(doto (System/getProperties)
(.setProperty "name" "Stuart")
(.setProperty "favoriteColor" "blue"))


Java Clojure Sugared
new Widget("red") (new Widget "red") (Widget. "red")
Math.PI (. Math PI) Math/PI
System.currentTimeMillis() (. System currentTimeMillis (System/currentTimeMillis)
rnd.nextInt() (. rnd nextInt) (.nextInt rnd)
person.getAddress().getZipCode() (. (. person getAddress) getZipCode) (.. person getAddress getZipCode)








分享到:
评论

相关推荐

    clojure.java-time:用于Clojure的Java 8 Date-Time API

    Java 8的Date-Time API支持时区转换,`clojure.java-time`同样提供了这样的功能。你可以方便地将日期时间对象转换为不同的时区,这对于处理全球数据尤其有用。 6. **互操作性**: `clojure.java-time`库的一个...

    nginx-clojure:用于嵌入Clojure或Java或Groovy程序的Nginx模块,通常是那些基于Ring的处理程序

    新功能:支持Java 9,10,11,12 Nginx工作进程之间的发布/订阅 基于共享内存的共享地图和基于Ring会话的共享地图 支持Sente,请参阅 支持WebSocket的按消息压缩扩展(PMCE) 用于将Nginx-Clojure嵌入到标准...

    Clojure可选类型系统TypedClojure.zip

    主要特性:从 Java 中保护你的 Clojure 程序,进行安全的互操作,正确的使用外部 Java 库。Typed Clojure 支持关键字映射的使用,类型检测器中包含有用的映射操作,包括关键字查找,添加或者移除关键字,合并映射...

    nio:Clojure对java.nio的支持

    o Clojure对java.nio的支持。 将clojure.java.io的输入流,输出流和复制功能扩展到java.nio类。 定义新的强制功能缓冲区,字节缓冲区,字符缓冲区,双缓冲区,浮点缓冲区,整数缓冲区,长缓冲区,短缓冲区,通道,可...

    Java_Clojure编程语言.zip

    Java的稳定性、企业级支持和丰富的库资源,加上Clojure的创新性和并发处理能力,共同构建了强大的技术栈。无论你是初学者还是经验丰富的开发者,深入学习这两种语言都将对你的职业生涯产生积极影响。

    Clojure学习——使用clojure jdbc操作mysql

    `clojure.java.jdbc`库还支持事务处理,这对于确保数据库操作的一致性非常重要。你可以使用`with-transaction`宏来包围一系列操作: ```clojure (jdbc/with-transaction [tx db-conf] ;; 在这里执行一系列操作 ) ``...

    Programming Clojure 英文电子版

    此外,Clojure支持懒惰求值和高阶函数等概念,这些都有助于编写更加模块化和复用性强的代码。 - **Concurrency**:Clojure通过软件事务内存(Software Transactional Memory, STM)实现了安全和高效的并发处理。STM...

    Clojure编程乐趣]+clojure_programming.pdf

    Clojure是一种基于Lisp家族的函数式编程语言,它运行在Java虚拟机(JVM)上,同时也支持JavaScript和其他平台。Clojure的设计目标是提供一个高效、并发、可移植的环境,适合解决现代软件开发中的复杂问题。在这个...

    clojure1.6

    Clojure 1.6 是一个基于 Lisp 语系的现代函数式编程语言,它运行在Java虚拟机(JVM)上。Lisp是一种历史悠久且影响力深远的编程范式,以其特有的括号语法和强大的宏系统著称。Clojure的设计目标是提供一种与Java平台...

    java.jdbc:Clojure的JDBC(以前称为clojure.contrib.sql)

    clojure.java.jdbc 一个低层的Clojure包装器,用于基于JDBC的数据库访问。 该项目是“稳定的”(不再是“活动的”)。 实际上,它已被取代。 有关兼容的高级DSL和迁移库,请参阅。 以前称为clojure.contrib.sql ...

    Clojure入门教程.pdf

    - **特点**:Clojure支持纯功能式编程,即强调函数的纯净性和不可变数据结构。这意味着函数的执行结果仅取决于其输入参数,并且函数不会修改外部状态。 - **应用场景**:广泛应用于Web开发、数据分析、并行计算等...

    clojure eclipse

    Eclipse 是一个流行的开源集成开发环境(IDE),广泛用于Java开发,但同样可以支持多种其他语言,包括Clojure。 在Eclipse中使用Clojure开发,你需要安装Leiningen,这是一个Clojure项目管理工具,它可以帮助你创建...

    programming-clojure-3rd

    Clojure是由Rich Hickey设计的,它运行在Java虚拟机(JVM)上,同时也支持JavaScript环境和其他平台。这本书涵盖了从基础语法到高级特性的广泛内容,对于想要学习或提升Clojure技能的程序员来说,是一份宝贵的资源。...

    clojure电子书

    Clojure是一种基于Lisp的函数式编程语言,它运行在Java虚拟机(JVM)上,具有强大的并发处理能力和丰富的库支持。 首先,《Clojure Programming》是一本全面介绍Clojure语言的指南,由Chas Emerick、Crispin Cowan...

    Clojure入门教程- Clojure – Functional Programming for the JVM中文版

    Clojure支持高阶函数,这极大地增强了其灵活性和表达能力。 - **不可变数据**: 在Clojure中,数据一旦创建就无法修改,这对于并发编程尤为重要,因为它消除了锁的需求。 #### 五、Clojure与并发编程 - **并发支持**...

    clojure1.3.0及资料

    Clojure是一种基于Lisp的函数式编程语言,它运行在Java虚拟机(JVM)上,充分利用了Java的生态系统。Clojure的设计目标是提供一种静态类型的、并发的、内存安全的语言,同时保持Lisp的简洁性和灵活性。在这个压缩包...

Global site tag (gtag.js) - Google Analytics