符号的Clojure平等

thi*_*bus 4 symbols equality clojure

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

'x  'y
Run Code Online (Sandbox Code Playgroud)

但是当我使用时:

(= ('x 'y))
Run Code Online (Sandbox Code Playgroud)

它返回true.同样的:

(identical? 'x 'y)
Run Code Online (Sandbox Code Playgroud)

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

oct*_*bus 9

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


小智 6

(= nil) ; => true

('x 'y) ; => nil

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

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

(instance? clojure.lang.IFn 'x) ; => true
Run Code Online (Sandbox Code Playgroud)