比较scala中的==字符

时间:2014-04-30 19:06:50

标签: scala

我正在努力教自己一些scala。我被困在一些似乎武断的东西。我想比较天气两个字符是否相等。

真实示例

这些按预期返回

"(" == "(" 
"(".equals("(")

我想查看

"(an exampl(e))".toList(0)      // res : Char = (

某种程度上是假的

这些返回false

"(an exampl(e))".toList(0).equals("(")
"(an exampl(e))".toList(0) == "("   
"(an exampl(e))".toList.head == "("  

我想我在这里遗漏了一些东西。我是否将字符值与列表指针进行比较?如果是这样,我如何检查我指向的项目的值是否等于"("

1 个答案:

答案 0 :(得分:25)

简短回答是你应该与')'进行比较。不是")"。 ")"属于String而非Char

使用REPL,您可以轻松测试它(注意类型)。

scala> ')'
res0: Char = )

scala> ")"
res1: String = )

equals方法的定义或多或少与此equals(obj: Any): Boolean相同,因此代码编译与您作为参数传递给它的引用并不重要。但是检查是false,因为类型不一样。

顺便说一下,我认为更好的方法就是编写这样的测试(.toList .headStringOps也定义了scala> "(an exampl(e))".head == '(' res2: Boolean = true

{{1}}