如何比较scala中的两个字符串?

时间:2014-10-10 10:37:47

标签: string scala equality

我想比较scala中的两个字符串。例如,

我的字符串是:

scala java
scala java c++
scala c++

我想比较字符串

每个字符串

scala c ++

结果应该是,

scala c++ = scala java   // false
scala c++ = scala java c++  // false
scala c++ = scala c++   // true

2 个答案:

答案 0 :(得分:31)

在Scala中,您可以使用==进行相等

scala> "scala c++" == "scala java"
res0: Boolean = false
scala> "scala c++" == "scala java c++"
res1: Boolean = false
scala> "scala c++" == "scala c++"
res2: Boolean = true

==方法在AnyRef类中定义。由于方法首先检查空值,然后在第一个对象上调用equals方法以查看两个对象是否相等,您不必进行特殊的空值检查;

"test" == null
res0: Boolean = false

请参阅Scala getting started guidestrings

来自" An Overview of the Scala Programming Language Second Edition&#34 ;;

  

"值之间的相等操作 == 被设计为   关于类型表示的透明度。为了价值   类型,它是自然(数字或布尔)相等。以供参考   类型 == 被视为等于方法的别名   的 java.lang.Object中即可。该方法最初定义为参考   等于,但是要在子类中重写以实现   这些子类的自然平等概念。例如,   盒装版本的值类型将实现一个equals方法   比较盒装值。相比之下,在Java中,==总是意味着   引用类型的引用相等。虽然这有点多了   有效实施,它还引入了严重的连贯性问题   因为相等值的盒装版本可能不再等于   尊重==。有些情况需要引用相等而不是   用户定义的平等。一个例子是hash-consing,其中ecient是   最重要的。对于这些情况,类 AnyRef 定义了一个额外的 eq   方法,不能被覆盖,并作为参考实现   平等(即它表现得像   Java中的 == 参考类型。)"

答案 1 :(得分:0)

要添加到等式比较中,可以使用!=来表示不等式。