4

Clojure プロジェクトで問題が発生していますが、答えが見つからないようです。私は2つのシンボルを比較しようとしています:

'x  'y

しかし、私が使用するとき:

(= ('x 'y))

true を返します。以下と同じ:

(identical? 'x 'y)

私は、同一のメモリアドレスを比較することを発見しましたが、なぜ 'x と 'y を比較すると true を返すのかわかりませんか? このような質問は見たことがありません。他の投稿のほとんどは数値を比較しています。

4

2 に答える 2

9

シンボルのリストを何も比較していません。= に引数を 1 つだけ渡すと、デフォルトで true が返されます。記号を囲む括弧を削除するだけで、記号自体を比較できます。(= 'x 'y).

于 2012-11-02T02:18:48.867 に答える
6
(= nil) ; => true

('x 'y) ; => nil

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

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

(instance? clojure.lang.IFn 'x) ; => true
于 2012-11-02T13:33:03.950 に答える