我想比较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发布于 2014-10-10 10:52:17
在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";
“值之间的相等操作==设计为对于类型的表示形式是透明的。对于值类型,它是自然的(数值或布尔值)相等。对于引用类型,java.lang.Object.将==视为等于方法的别名。该方法最初被定义为引用相等,但在子类中被重写,以实现这些子类的自然相等概念。例如,值类型的装箱版本将实现一个相等的方法,该方法比较装箱值。相比之下,在Java中,==总是指引用类型上的引用相等。虽然这是一个更有效的实现,但它也引入了一个严重的一致性问题,因为盒装版本的等值可能不再等同于==。有些情况下需要引用相等,而不是用户支持的相等。一个例子是杂凑,在那里,专一是最重要的。对于这些情况,类AnyRef定义了一个额外的eq方法,该方法不能被重写,并且实现为引用相等(也就是说,对于引用类型,它的行为类似于Java中的== )。
发布于 2020-06-04 17:01:11
若要添加等式比较,可以将!=用于不等式。
https://stackoverflow.com/questions/26297473
复制相似问题