我正在尝试将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))
)
)
答案 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
出现在哪一行?