我在一个clojure项目中遇到麻烦,我似乎无法找到答案。我想比较两个符号:
'x 'y
但是当我使用时:
(= ('x 'y))
它返回true。同样的:
(identical? 'x 'y)
我发现相同的比较内存地址,但是我没有找到为什么' x和' y在比较时返回true?我没有看到这样的问题,其他大多数帖子都比较数字。
答案 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