我想比较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
答案 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 guide和strings
来自" An Overview of the Scala Programming Language Second Edition&#34 ;;
"值之间的相等操作 == 被设计为 关于类型表示的透明度。为了价值 类型,它是自然(数字或布尔)相等。以供参考 类型 == 被视为等于方法的别名 的 java.lang.Object中即可。该方法最初定义为参考 等于,但是要在子类中重写以实现 这些子类的自然平等概念。例如, 盒装版本的值类型将实现一个equals方法 比较盒装值。相比之下,在Java中,==总是意味着 引用类型的引用相等。虽然这有点多了 有效实施,它还引入了严重的连贯性问题 因为相等值的盒装版本可能不再等于 尊重==。有些情况需要引用相等而不是 用户定义的平等。一个例子是hash-consing,其中ecient是 最重要的。对于这些情况,类 AnyRef 定义了一个额外的 eq 方法,不能被覆盖,并作为参考实现 平等(即它表现得像 Java中的 == 参考类型。)"
答案 1 :(得分:0)
要添加到等式比较中,可以使用!=
来表示不等式。