符号的Clojure平等

时间:2012-11-02 01:45:17

标签: clojure symbols equality

我在一个clojure项目中遇到麻烦,我似乎无法找到答案。我想比较两个符号:

'x  'y

但是当我使用时:

(= ('x 'y))

它返回true。同样的:

(identical? 'x 'y)

我发现相同的比较内存地址,但是我没有找到为什么' x和' y在比较时返回true?我没有看到这样的问题,其他大多数帖子都比较数字。

2 个答案:

答案 0 :(得分:9)

您正在将符号列表与任何内容进行比较。如果只将一个参数传递给=,则默认返回true。只需删除符号周围的括号,然后您将比较符号本身。 (= 'x 'y)

答案 1 :(得分:6)

(= nil) ; => true

('x 'y) ; => nil

('x #{'x}) ; => 'x

('x #{'z} :one) ; => :one

(instance? clojure.lang.IFn 'x) ; => true