文字列の同等性をチェックする方法はclojureにありますか?つまり、場所ではなく、内容が等しいかどうかを知る必要があります。
ありがとう。
Clojureの同等性(=
関数)は常にIDではなく値をテストするため、2つの文字列が同じ内容の場合は=
になります。
ほとんどのJavaタイプ(文字列を含む)の場合、Clojure =
はJava .equals
。 String.equals =は、「同じ文字列を表す」と定義されています。
IDをテストする場合(これらのポインターはメモリー内の同じ場所にありますか?)、identical?
関数を使用します。
(= "hello" (str "hel" "lo"))
; => true
JVMには、値ごとに最大1つのエントリを保持する文字列プールがあるため、IDと値の同等性は同じ比較になります。 StringBuilder.
とString.
を使用する方法はいくつかありますが、これは厳密には当てはまりませんが、clojure等価関数は.equals
を呼び出すため、IDが異なる場合は値の比較が実行されます。