Scala案例匹配String

时间:2013-12-30 18:46:48

标签: scala

我正在尝试将case与String匹配,并且具有以下代码:

val selectedAnswers: List[Int] = questionType match {
  case "CHECK_BOX"    => {
    answerCheckBox match {
      case Some(answers) => answers
      case None => List()
    }
  }
  case "RADIO_BUTTON" => {
    answerRadio match {
      case Some(answer) => List(answer)
      case None => List()
    }
  }
  case _ => {
    List()
  }
}

当字符串不是RADIO_BUTTON或CHECK_BOX时,为什么它不会落入_ case?

answerRadio和answerCheckbox的值实际上来自我提交给控制器的表单。

val (currentQuesId, questionType, answerRadio, answerCheckBox) = runExamForm.bindFromRequest.get

表单声明如下:

  val runExamForm = Form(
    tuple(
      "currentQuestionId" -> number,
      "questionType" -> text,
      "answerRadio" -> optional(number),
      "answerCheckbox" -> optional(list(number))
    )
  )

2 个答案:

答案 0 :(得分:4)

这是您的代码的“等效”版本:

val selectedAnswers: List[Int] = questionType match {
  case "CHECK_BOX"    => answerCheckBox.toList.flatten
  case "RADIO_BUTTON" => answerRadio.toList
  case _ => List()
}

它是否按预期工作?

答案 1 :(得分:0)

这是一个很长的镜头,但尝试用其他名称替换_x很好),并确保您的代码只包含常规空格。

我很少见到代码中其他非打印字符引起的奇怪错误,这些错误似乎总是来自OSX Skype客户端上的聊天代码。

另外......您能否在代码示例中确认MatchError出现在哪一行?