[英]Scala case match a 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()
}
}
當String不是RADIO_BUTTON或CHECK_BOX時,為什么不能通過_大小寫?
實際上,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))
)
)
這是代碼的“等效”版本:
val selectedAnswers: List[Int] = questionType match {
case "CHECK_BOX" => answerCheckBox.toList.flatten
case "RADIO_BUTTON" => answerRadio.toList
case _ => List()
}
它能按預期工作嗎?
這是一個很長的路,但是請嘗試使用其他名稱替換_
( x
很好),並確保您的代碼只包含常規空格。
我很少見到像這樣的異常錯誤,這是由代碼中的其他非打印字符引起的,這似乎總是由OSX Skype客戶端上的聊天中粘貼代碼引起的。
另外...您可以在代碼示例中確認MatchError
發生在哪一行嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.