【问题标题】:comparing == characters in scala在scala中比较==字符
【发布时间】:2014-04-30 19:06:50
【问题描述】:

我正在尝试自学一些 scala。我被一些看似武断的东西困住了。我想比较天气两个字符是否相等。

真实例子

这些按预期返回 true

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

我要检查的内容

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

不知何故是假的

这些返回错误

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

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

【问题讨论】:

  • 您没有使用实际的 Scala 版本?这应该会给你一个警告......

标签: scala


【解决方案1】:

简短的回答是您应该与“)”而不是“)”进行比较。 “)”的类型是 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

【讨论】:

    猜你喜欢
    • 2021-01-08
    • 2017-11-23
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 2013-04-06
    • 2010-09-28
    相关资源
    最近更新 更多