如何在Scala中匹配Char?

时间:2019-04-01 20:29:57

标签: scala

好的,这听起来像是一个琐碎的问题。

  val delim = ','
  val chars = "abc,def".toCharArray
  var i = 0
  while (i < chars.length) {
    chars(i) match {
      case delim =>
        println(s"($i): D!")
      case c =>
        println(s"($i): $c")
    }
    i += 1
  }

我很困惑,它的输出是:

(0): D!
(1): D!
(2): D!
(3): D!
(4): D!
(5): D!
(6): D!

我希望如此:

(0): a
(1): b
(2): c
(3): D!
(4): d
(5): e
(6): f

如何匹配Char值?

注意::如果我硬接线delim字符“ case','=>”,它会按预期工作!如果我使用Char类型的val,为什么会中断?

1 个答案:

答案 0 :(得分:9)

您的模式匹配将创建一个称为delim的第二个变量,该变量会遮住第一个变量,并且由于新的且未修饰的变量匹配所有内容,因此这是唯一执行的case

使用back-tic告诉编译器与现有变量而不是新变量匹配。

  case `delim` =>