- 浏览: 16133 次
- 性别:
- 来自: 广州
最新评论
文章列表
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 ...
Clojure与并行计算
- 博客分类:
- Clojure
我们在写Java代码时对于处理并行计算总是需要特加小心,加锁与否是个相当伤脑筋的事。Clojure对并行计算支持的很好,这也成为很多业内人员选择使用Clojure的一个重要原因。
维基百科中有一段文字很好的阐述了并行计算的概念:“系统中能够同时执行多个计算,并且存在潜在的彼此交互,这种特性被称为并行。并行计算可能在同一芯片的多个核上执行,那些时分线程优先运行在同一处理器上,或执行在物体空间彼此独立的处理器上。”并发的主要挑战是如何管理好对共享而又易变状态的访问。
管理并封锁比较有困难。因为需要决定哪些对象需要锁定,以及何时锁定。当代码发生更新或者新的代码加入时,这些决定需要 ...
Clojure中的元数据Metadata
- 博客分类:
- Clojure
本文参考自http://java.ociweb.com/mark/clojure/article.html#Metadata
也许你在别的计算机语言中见过元数据这一概念,但Clojure中的元数据,也即Metadata有其独有的含义。Clojure里面的Metadata是附加到一个符号或者集合上的一些数据,它们和符号或者集合的逻辑数据没有直接的关系。两个逻辑上一样的方法可以有不同的元数据。比如两张扑克牌都是梅花K,Metadata是用于指示那张牌是横向着的,事实上对于大多数扑克牌游戏,扑克牌的倾斜与否对扑克牌所表示数值根本没有影响。如下图所示:
(defstruct car ...
Clojure中的命名空间
- 博客分类:
- Clojure
一个缺乏语义元素组织管理框架的编程语言会显得杂乱无章,并且会导致各种莫名的问题,当然而今这样的语言似乎很难生存。
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
- 博客分类:
- Clojure
由于调用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 ...