- 浏览: 423301 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (118)
- JBPM4 (1)
- JavaScript (11)
- Hibernate (3)
- Spring (2)
- JAVA设计模式 (0)
- JAVA基础 (8)
- JQuery (1)
- Maven (9)
- Ant (1)
- Log (3)
- Linux (13)
- NoSQL (1)
- Emacs (6)
- JAVA (10)
- 道,可道,非常道 (6)
- CSS3 (3)
- HTML5 (1)
- 其他 (3)
- groovy (1)
- Clojure (21)
- ExtJs (3)
- play! (3)
- freemarker (1)
- prolog (3)
- python (2)
- hadoop (1)
- OS X (1)
- JVM (1)
- scala (3)
- 算法 (2)
- play2 (0)
- play2 scala (1)
- play2 java (1)
- android (0)
- xxx (0)
- storm (0)
- go (0)
最新评论
-
yhxf_ie:
Scala真好玩啊
关于scala搞出的新概念和语法糖 -
莴笋的春天:
能解密吗?
MD5算法的一个实现 -
TerrorM-eye:
引用神奇的花括号{}代替小括号()语法那个让我想起了spark ...
关于scala搞出的新概念和语法糖 -
u012896872:
不错,有收获。
关于scala搞出的新概念和语法糖 -
qiaoxiaoka:
我在logback中加了 <logger nam ...
在logback中配置mybatis显示sql
关于gen-class的参数说明:
:name aname
要生成的类的全限定名
:extends aclass
指定superclass,没有指定默认为Object
:implements [interface ...]
要实现的接口
:init name
指定构造函数名称,必须返回[ [superclass-constructor-args] state]
如果没有指定,则args传给superclass,并且state为nil
:constructors {[param-types] [super-param-types], ...}
指定构造参数的类型
:post-init name
init之后执行
:methods [ [name [param-types] return-type], ...]
定义开放的方法,默认为non-private方法,静态方法加^{:static true}。
:main boolean
指定的main方法。名称为(str prefix main)。prefix默认为减号。也可以自己指定prefix。
:factory name
工厂方法
:state name
存放的state的名称,state是ref或者agent类型。(对应于init中的state。必须要配置init)
:exposes {protected-field-name {:get name :set name}, ...}
暴露get,set方法
:exposes-methods {super-method-name exposed-name, ...}
需要暴露哪些方法
:prefix string
前缀,默认为减号。查找方法要以(str prefix fn-name)为准,所以main方法写成-main。可以认为是public的一个标识符。
:impl-ns name
指定实现方法的ns
:load-impl-ns boolean
默认为true,和impl-ns配套使用
一个例子
:name aname
要生成的类的全限定名
:extends aclass
指定superclass,没有指定默认为Object
:implements [interface ...]
要实现的接口
:init name
指定构造函数名称,必须返回[ [superclass-constructor-args] state]
如果没有指定,则args传给superclass,并且state为nil
:constructors {[param-types] [super-param-types], ...}
指定构造参数的类型
:post-init name
init之后执行
:methods [ [name [param-types] return-type], ...]
定义开放的方法,默认为non-private方法,静态方法加^{:static true}。
:main boolean
指定的main方法。名称为(str prefix main)。prefix默认为减号。也可以自己指定prefix。
:factory name
工厂方法
:state name
存放的state的名称,state是ref或者agent类型。(对应于init中的state。必须要配置init)
:exposes {protected-field-name {:get name :set name}, ...}
暴露get,set方法
:exposes-methods {super-method-name exposed-name, ...}
需要暴露哪些方法
:prefix string
前缀,默认为减号。查找方法要以(str prefix fn-name)为准,所以main方法写成-main。可以认为是public的一个标识符。
:impl-ns name
指定实现方法的ns
:load-impl-ns boolean
默认为true,和impl-ns配套使用
一个例子
(ns com.example ) (gen-class :name com.example.Demo :state state :init init :prefix "-" :main false :methods [[setLocation [String] void] [getLocation [] String]]) ;;构造函数。state值为:(atom {:location "default"}) (defn -init [] [[] (atom {:location "default"})]) ;;保存字段到state中 (defn setfield [this key value] (swap! (.state this) into {key value})) ;;从state中获取field (defn getfield [this key] (@(.state this) key)) (defn -setLocation [this loc] (setfield this :location loc)) (defn -getLocation [this] (getfield this :location)) ;;main入口,可以在lein中配置:main参数,然后执行lein uberjar来打包一个可执行的jar包。 (defn -main [& args] (pritnln "Hello,World!")) ;; 编译后,添加到classpath。当成java类来调用、执行。 user=> (def ex (com.example.Demo.)) #'user/ex user=> (.getLocation ex) "default" user=> (.setLocation ex "time") nil user=> (.getLocation ex) "time"
发表评论
-
地图着色——core.logic求解
2015-06-16 13:24 1029记得很久很久之前写过一篇《七周七语言——地图着色》。用core ... -
storm源码阅读——启动脚本一览
2014-12-22 01:29 0testtestst -
storm源码阅读——Nimubs启动
2014-12-12 18:29 0学习使用clojure代码也有一段时间了。除了用clojure ... -
用clojure实现一致性哈希算法(consistent hashing)
2014-05-16 18:42 1447一、依赖的jar包 [com.google.guava/g ... -
关于clojure的ns中的require,use,import等
2014-05-15 11:20 2916初学clojure的时候曾经对ns引入库的几个函数疑惑了一阵, ... -
clojure逻辑编程框架——core.logic入门
2014-03-10 00:31 1625core.logic是miniKanren的一个实现。mini ... -
用clojure和javascript看hadoop的map和reduce
2014-01-16 18:28 0(reduce + (map #(* % 2) [1, ... -
lein插件大全
2014-01-08 22:54 3733lein插件的wiki地址:https://github. ... -
什么是闭包
2013-12-26 22:11 87今天有个同事问我什么是闭包? 我脑子里一闪而过匿名函数,内部访 ... -
一张clojure思维导图
2013-12-25 10:19 1073... -
clojure网页爬虫代码阅读
2013-09-10 18:34 0clojure网页爬虫代码: (ns examples.c ... -
一步完成emacs的clojure开发环境配置——emacs-live
2013-08-26 15:49 1875断断续续学习Emacs好久 ... -
clojure解构(clojure destructuring)
2013-06-15 02:17 3866解构是什么? 可以认为map、list、struct等是构造出 ... -
clojure defn的参数解构
2013-04-16 23:50 1883In Clojure 1.2, you can destr ... -
clojure学习——通过ssh2协议远程执行命令
2013-02-19 16:06 8一、添加ganymed-ssh2依赖 (defprojec ... -
Clojure学习——Web框架Noir
2012-12-16 12:25 1861Noir是一个clojure的轻量级的web快速开发框架。而且 ... -
Clojure学习——Protocols & Datatypes
2012-12-08 17:37 0由于java的接口有一定的缺憾,所以 -
Clojure学习——给持久化框架配上c3p0连接池
2012-12-06 17:07 1767之前的两个持久化框架都没有使用连接池。总感觉不放心。试着配置了 ... -
Clojure学习——持久化框架clj-record
2012-12-06 10:47 1574clj-record是仿Ruby on Rails Activ ... -
Clojure学习——持久化框架ClojureQL
2012-12-06 09:35 1648之前写过用clojure jdbc来连接数据库进行操作。对于很 ...
相关推荐
### Clojure入门教程知识点概述 #### 一、Clojure简介 - **Clojure**是一种运行在Java虚拟机(JVM)上的动态编程语言,它继承了Lisp家族的强大功能,同时结合了现代编程语言的优点,如面向对象编程和函数式编程。 ##...
《Clojure SHA-3 源码解析》 Clojure是一种基于Lisp的现代函数式编程语言,它运行在Java虚拟机(JVM)上,充分利用了Java平台的强大功能。SHA-3,全称为Secure Hash Algorithm 3,是美国国家标准与技术研究所(NIST...
java运行依赖jar包
【标题】"clojure-1.6.0-RC3.zip" 涉及的是Clojure编程语言的一个版本,即1.6.0的候选发布版本3(Release Candidate 3)。Clojure是一种基于Lisp的函数式编程语言,它运行在Java虚拟机(JVM)上,充分利用了Java生态...
clojure-1.5.1.jar
这个压缩包"clojure-must-watch-源码.rar"似乎包含了与Clojure相关的源代码,可能是为了帮助学习者深入理解Clojure编程语言的核心概念和实践技巧。尽管没有具体的标签来指导我们关注特定的方面,但我们可以从Clojure...
[2009] Programming Clojure.(Stuart Halloway).[1934356336].pdf [2010] Functional Programming with Clojure - Simple Concurrency on the JVM.(Tim Berglund, Matthew McCullough).[193650202X].pdf [2010] ...
clojure-cheatsheet, 用于Emacs的Clojure Cheatsheet 用于Emacs的难以置信方便的 Clojure Cheatsheet,更新为 Clojure,打包成简单,快速,可以搜索的离线形式: 状态准备使用基于 Clojure 1.7.0.安装如果你连接到 ...
clojure-csv, 从Clojure读取和写入CSV文件的库 csvclojure CSV是一个用于读取和写入CSV文件的小型库。 主要功能:接受两个常见行终止符。CSV字段内的引号和转义符是正确的句柄。解析时支持在CSV字段中嵌入未转义的行...
[2013] Functional Programming Patterns in Scala and Clojure - Write Lean Programs for the JVM.(Michael Bevilacqua-Linn).[1937785475].pdf+epub.rar [2014] Clojure Cookbook - Recipes for Functional ...
Clojure是一种LISP风格的语言,运行在JVM上。Clojure的一大特色就是其并发机制,它支持不可变的数据结构(Clojure是来自于可持久化的数据结构)。Clojure还有一个特色是软件事务存储(Software Transactional Memory...
这个“clojure-basics-源码.rar”压缩包很可能是包含了一些基本Clojure编程概念的示例代码或者教程。虽然没有具体的标签提供额外的信息,但我们可以从文件名推测其内容可能涵盖了Clojure的基础知识。 Clojure的基本...
clojure 1.8.0
4. **Clojure 1.4.0 Alpha2**: "clojure-clojure-clojure-1.4.0-alpha2-12-gec59eba.zip"是Clojure 1.4.0的一个早期预览版本。这个版本可能包含了1.3.0之后的进一步改进和新功能,对于关注Clojure演进的开发者来说,...
《Programming Clojure 第三版》是一本深入探讨Clojure编程语言的专业书籍,旨在帮助开发者全面理解和掌握这门基于Lisp的现代函数式编程语言。Clojure是由Rich Hickey设计的,它运行在Java虚拟机(JVM)上,同时也...
在您的project.clj中,将[clojure-sha-3 "0.1.0"]到:dependencies矢量中。 使用时,请在您的ns声明中使用:require [joshua-g.sha-3 :as s] ,或从REPL中(require '[joshua-g.sha-3 :as s]) 。 例子 user> ...
Nginx-Clojure 是一个 Nginx 的模块,用于嵌入 Clojure 或者 Java 或者 Groovy 程序。 可以通过nginx-clojure实现JAVA扩展nginx的功能,如权限验证。
clojure-utils, 各种小型但方便的clojure实用程序函数库 各种小型但方便的Clojure实用程序函数库特别关注:Clojure.java - 用于从Java调用Clojure的实用工具函数的Java类arrays.clj - 操作Java数组core.clj - 应该在...
Clojure入门介绍: Clojure - Functional Programming for the JVM
氯菊酯 Clojure的。 采用类似于草书的方法静态分析代码。 •••••• 总览 该项目的目标是为所有编辑人员带来适用于Clojure的出色... clojure-lsp启动了一个NREPL服务器,可以更改正在运行的实例的代码并实时查看客