当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

Clojure学习总结

发表于: 2015-02-03   作者:chenbowen00   来源:转载   浏览次数:
摘要: 1、Clojure认为值是最重要的概念,值可以是数字,字符串,向量,映射,集合。注:值定义后就不可修改,如果修改只能重新引用值关系,不能直接修改值 2、Clojure使用def绑定值得关系。例如:(def hello (fn [] "hello world"))  意思是定义hello函数打印hello world。    使用defn重新绑定
1、Clojure认为值是最重要的概念,值可以是数字,字符串,向量,映射,集合。注:值定义后就不可修改,如果修改只能重新引用值关系,不能直接修改值
2、Clojure使用def绑定值得关系。例如:(def hello (fn [] "hello world"))  意思是定义hello函数打印hello world。
   使用defn重新绑定值的关系。例如:(defn hello [] "goodnight moon")
3、Clojure希望第一个参数是函数值,如果不为函数值会报错,quote除外。该方法返回后续列表值。例如:(queto (1 2 3)) ==>(1 2 3)
4、Clojure的向量使用vector,该函数值等同于JAVA中的LinkedList或ArrayList。例如:(vector 1 2 3)  ==》 [1 2 3]    注:可以使用简化方式(vec '(1 2 3))
5、Clojure的函数nth有两个参数,集合和索引。  例如:(nth '(1 2 3) 1) ==> 2
6、Clojure支持映射即java中的hashmap,使用{},带冒号的映射键称为关键字。 例如:(def foo {"a" "a1" "b" "b1"}) (foo "a") ==> "a1"  (def person {:nmae "chenbowne",:age "18"}) (person :name) ==> "chenbowen"
7、Clojure支持集即java中的set,例如: #{"apple" "pair" "peach"}
8、Clojure的sort-by函数有两个参数,一个用来排序的函数,一个是要排序的向量
9、Clojure使用读取器宏和派发读取宏简化代码。例如:#' 标识展开为(var); #{} 表示
10、Clojure序列使用seq,基本序列函数如下:
    (1) (seq <col>)返回一个序列,所操作集合的视图;(first <clo>)返回序列第一个元素,如果集合为空则返回nil
          (rest <col>)从集合去掉第一个元素后返回新的序列,为nil则返回nil;(seq? <o>)如果O为序列则返回true
          (cons <elt> <coll>)在集合前面新增元素,并返回新序列;(conj <elt> <coll>)返回将新元素加到合适一端新的序列。
  (every? <pred-fn> <coll>)如果(pred-fn)对集合中的每个元素都返回逻辑真,则返回true;
11、Clojure可以使用带变元参数的函数,例如: (defn const-fun-arity1 ([] 1) ([x] 1) ([x & more] 1)) 表示const-fun-arity1函数可以不带参数,带一个参数,带一个或多个参数。但是都返回1。
12、Clojure可以直接使用java中的方法,底层用.宏实现的,可以直接使用Object的方法,可以使用import导入JAVA类。例如(defn printLen [y] (.length (.toString y)))  (import '(java.util ArrayList LinkedList))
13、Clojure的宏proxy可以扩展JAVA类或接口。例如:(def lbq (LinkedBlockingQueue))(def msgRdr (proxy [Runnable] [] (run [] (.toString (.poll lbq)))))  表示实现Runnable接口

Clojure学习总结

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
由于Emacs的学习曲线 、查看源码、调试等问题。所以我暂时选择了IntelliJ IDEA作为clojure的开发环境
由于Emacs的学习曲线 、查看源码、调试等问题。所以我暂时选择了IntelliJ IDEA作为clojure的开发环境
1.在C盘下创建一个文件夹,并且命名为home_lein,然后把下载的lein.bat文件和leiningen-2.0.0-previ
以前听说过LISP函数式编程,也听人说Erlang的牛逼,接触了Clojure才知道,原来Clojure就是JVM中的Er
1.通过DOS命令行”MD 路径”在指定的路径下创建一个文件夹。如下图所示: 2.通过DOS命令行定位到这
步骤1:在WINDOWS中创建新建一个文本文档,然后将“新建文本文档.txt”改名为“直接运行clojureJAR
正在学习 Clojure,为了方便跑demo,把 Clojure RT 抠出来,用 rSyntaxTextarea 组件弄了下语法高亮
《Clojure编程》 基本信息 作者: (美)Chas Emerick(蔡司埃默里克) Brian Carper(布赖恩卡珀) Chris
英文原 getting started with clojure,翻译:开源中国 我将尝试教一些人(主要是Python开发者,在OS
借助jFinal,算是快速入门了javaweb基础开发,起码能运行起来了。能写点页面,能调点数据。 现阶段
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号