如何在不调用java.lang.String的情况下检查clojure中字符串的相等性?

时间:2010-02-25 21:51:32

标签: clojure

在clojure中有没有办法检查字符串是否相等? 即我需要知道,他们的内容是否相等,而不是位置。

感谢。

2 个答案:

答案 0 :(得分:48)

Clojure中的等式(=函数)总是测试值,而不是身份,因此如果两个字符串具有相同的内容,则为=

对于大多数Java类型,包括String,Clojure =将调度到Java .equalsString.equals被定义为“代表相同的字符序列。”

如果你想测试身份(这些指针指向内存中的相同位置吗?),请使用identical?函数。

答案 1 :(得分:8)

(= "hello" (str "hel" "lo"))
; => true 

JVM有一个字符串池,每个值最多只能保存一个条目,因此标识和值相等是相同的比较。使用StringBuilder.String.的方法并不严格,但由于clojure相等函数调用.equals,如果身份不同,将执行值比较。