`
xiuzhuchenqing
  • 浏览: 16133 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表
Clojure的测试框架 基于测试的开发方式: 好的测试框架有利于驱动项目的开发,当编写代码前写了测试代码,那么就非常有利于开发人员集中精力,着力于当前待解决的问题,加上Clojure的REPL环境,提高了开发速度。 <!--[if !supportLists]-->第一章<!--[endif]-->断言 Clojure测试框架中的is宏能够对任意表达式进行断言,也是其最核心的内容。 <!--[if mso & !supportInlineShapes & supportFields]><span style='ms ...
在百度百科中是这么定义引用类型的:“引用类型 由类型的实际值引用(类似于指针)表示的数据类型。如果为某个变量分配一个引用类型,则该变量将引用(或“指向”)原始值。不创建任何副本。引用类型包括类、接口、委托和装箱值类型”。Clojure的引用类型也于此类似。由于在Clojure中,纯函数式的可谓德高望重,备受推崇,也就意味着要尽量少用或者不用那些具有副作用特性的代码。但对数据状态的更改难以避免,毕竟事物总是变化的,因此Clojure中专门定义了一种引用类型。   以下中英文互译内容参考自Clojure - Functional Programming for the JVM。   Refe ...
我们在写Java代码时对于处理并行计算总是需要特加小心,加锁与否是个相当伤脑筋的事。Clojure对并行计算支持的很好,这也成为很多业内人员选择使用Clojure的一个重要原因。   维基百科中有一段文字很好的阐述了并行计算的概念:“系统中能够同时执行多个计算,并且存在潜在的彼此交互,这种特性被称为并行。并行计算可能在同一芯片的多个核上执行,那些时分线程优先运行在同一处理器上,或执行在物体空间彼此独立的处理器上。”并发的主要挑战是如何管理好对共享而又易变状态的访问。   管理并封锁比较有困难。因为需要决定哪些对象需要锁定,以及何时锁定。当代码发生更新或者新的代码加入时,这些决定需要 ...
本文参考自http://java.ociweb.com/mark/clojure/article.html#Metadata 也许你在别的计算机语言中见过元数据这一概念,但Clojure中的元数据,也即Metadata有其独有的含义。Clojure里面的Metadata是附加到一个符号或者集合上的一些数据,它们和符号或者集合的逻辑数据没有直接的关系。两个逻辑上一样的方法可以有不同的元数据。比如两张扑克牌都是梅花K,Metadata是用于指示那张牌是横向着的,事实上对于大多数扑克牌游戏,扑克牌的倾斜与否对扑克牌所表示数值根本没有影响。如下图所示:     (defstruct car ...
一个缺乏语义元素组织管理框架的编程语言会显得杂乱无章,并且会导致各种莫名的问题,当然而今这样的语言似乎很难生存。 Clojure也有自己的命名空间,不同于Java等其他语言的是,clojure在逻辑上的组织并非由目录的自然组织方式决定(大多数时候人们还是习惯这么做的,比较直观)。Java将方法组织在一个类中,而类又被组织在包中。Clojure则将包括Vars、Refs、Atoms、Agents、functions、mocros、甚至namespace自己都组织到以symbols命名的
     解构可以用在宏或者函数的参数列表中,用于将集合中的某些部分提取到局部绑定变量中。解构也可以用在let特殊形式或者bingding宏所创建的绑定变量中。  假设我们定义的某函数接受一个向量或者列表作为参数,需要返回第一个和第三个子元的和。如下所示:   (defn approach1 [numbers] (let [n1 (first numbers) n3 (nth numbers 2)] (+ n1 n3))) ; Note the underscore used to represent the ; second item in t ...

Clojure中的IO

由于调用Java易如反掌,Clojure仅仅提供了一个用于处理I/O操作的非常小的函数集合,但是clojure.java.io库中的这些函数使得调用Java中那些处理I/O的类变得更加方便。 Clojure中预定义了几个特殊形式的全局绑定变量*in*, *out* 和 *err*,分别对应于标准输入、输出和错误处理 。【(flush)】等价于【(.flush *out*)】,将输出缓冲中的内容刷到标注输出流*out*中。当然这些绑定变量都是可以改变的,比如向如下所示你可以把输出重定向到 "
很奇怪,Clojure(可千万别张冠李戴,不是Google的Closure)本身就是Lisp的一种方言(基于java虚拟机JVM),而它竟然也拥有自己的方言ClojureScript。威武之处,尽显神通啊,难怪说Lisp是一门可以编程的编程语言,如果你足够强大,那么用Lisp或者Clojure定义自己的一套专用的语言,不过你可不能说你创造了一门语言,只能说你定义了一种基于Lisp的方言。 和
用flex 做项目的时候出现 “无法区域设置zh_CN 解析资源束”这种问题时 在网上搜了很多解决办法 有以下几种说法: 0.导入locale文件中的 *_rb.swc 1.把-locale zh_CN 改成 -locale en_US 编译通过(我就是这种方法通过) 2.问题关键在于项目属性的flex编译器的编译器参数设置问题; 默认的值是:-locale zh_CN,英文版的是-locale en_US; 首先你要找到你controls,collection,core位置,建议添加到一个文件夹中在进行下列设置,如locale文件夹: -locale zh_CN -source-pat ...
Global site tag (gtag.js) - Google Analytics