我正在努力教自己一些scala.我被困在一些似乎武断的东西.我想比较天气两个字符是否相等.
真实的例子
这些按预期返回true
"(" == "("
"(".equals("(")
Run Code Online (Sandbox Code Playgroud)
我要检查什么
"(an exampl(e))".toList(0) // res : Char = (
Run Code Online (Sandbox Code Playgroud)
不知何故是假的
这些返回false
"(an exampl(e))".toList(0).equals("(")
"(an exampl(e))".toList(0) == "("
"(an exampl(e))".toList.head == "("
Run Code Online (Sandbox Code Playgroud)
我想我在这里遗漏了一些东西.我是否将字符值与列表指针进行比较?如果是这样,我如何检查我指向的项目的值是否等于"("?
lpi*_*ora 26
简短的回答是你应该与')'而不是")"进行比较.")"的类型String不是Char.
使用REPL,您可以轻松地测试它(注意类型).
scala> ')'
res0: Char = )
scala> ")"
res1: String = )
Run Code Online (Sandbox Code Playgroud)
equals方法的定义或多或少与此类似equals(obj: Any): Boolean,因此代码编译与您作为参数传递给它的引用无关.但是检查是false,因为类型不一样.
顺便说一句,我认为更好的方式是写你的测试是这样的(不.toList为.head被定义StringOps为好):
scala> "(an exampl(e))".head == '('
res2: Boolean = true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11412 次 |
| 最近记录: |