我正在努力教自己一些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 == "("
我想我在这里遗漏了一些东西。我是否将字符值与列表指针进行比较?如果是这样,我如何检查我指向的项目的值是否等于"("
?
答案 0 :(得分:25)
简短回答是你应该与')'进行比较。不是")"。 ")"属于String
而非Char
。
使用REPL,您可以轻松测试它(注意类型)。
scala> ')'
res0: Char = )
scala> ")"
res1: String = )
equals方法的定义或多或少与此equals(obj: Any): Boolean
相同,因此代码编译与您作为参数传递给它的引用并不重要。但是检查是false
,因为类型不一样。
顺便说一下,我认为更好的方法就是编写这样的测试(.toList
.head
,StringOps
也定义了scala> "(an exampl(e))".head == '('
res2: Boolean = true
:
{{1}}